第一天
1、请用自己的语言简要描述一下面向过程编程和面向对象编程的特点
1.1、如果想实现一个数据库的查询操作,用面向过程编程如何实现,用面向对象编程如何实现,写出代码
1.2、利用上述封装的数据库类任意实现几个mysql的查询操作
1.3、思考如何实现mysql的增删改SQL操作?
增删改没有数据返回,如何判断成功了(用try做错误捕捉,没有捕捉到错误则表示成功了,否则失败,代码如何实现?)
2、python的类中__init__ 函数称为什么函数,什么时候该函数会被执行,该函数如果有参数应该怎么传入?
3、python中的成员变量的作用域是什么,和函数内部的局部变量的区别是什么
4、类、对象、实例化分别是什么意思?
4、if __name__ == "__main__" 起到什么作用?
5、请用自己的语言简要描述一下Page Object(页面对象)在自动化中的实现思路,可以结合Login类描述
6、给下列代码添加注释说明其作用:
1 class Login():
2 def __init__(self, url): #这个是...函数,有一个url作为传入参数 构造函数
3 self.url = url #这行代码将私有变量url赋值给了......变量:self.url
4 def open(self): #这个函数实现的作用是:......打开浏览器
5 ......
6 def close(self): #这个函数实现的作用是:......关闭浏览器
7 ......
8 def login(self, user, pwd): #这个函数实现的作用是:......,两个参数分别传入...和... 登录,用户名和密码
9 ......
10 def login_v(self, expStat, expInfo): #这个函数实现的作用是:......,两个参数分别意思是:......验证登录是否符合预期,expStat表示期望登录成功还是失败,expStat表示无论成功失败的页面信息,从而可以和实际对比
11 ...... #expStat: True:期望登录成功;
12 #expInfo:if 期望登录成功,则为成功后页面应该出现的用户名;else 为登录验证失败,返回期望和实际对比
13 #expStat:期望登录失败
14 #expInfo: if 期望登录失败,则失败后页面应该出现提示失败信息;else 为登录失败信息不符合预期,返回期望和实际对
15
16 if __name__=="__main__": #什么时候__name__变量会等于__main__? 直接运行时__name__ = __main__ , 作为模块(也就是库)被导入 __name__ !=__main__
17 x = Login("http://localhost:80/ranzhi/www") #这行代码实现了...,得到x变量是... 传入参数url,变量是Login类的对象
18 x.open() #这行代码调用了......, 实现了......功能操作 调用open(),实现了打开浏览器并指定url
19 x.login("admin","123456") #这行代码调用了......并传入....和....作为参数, 实现了......功能 调用login(),传入admin和123456作为参数,实现了登录功能
20 x.login_v(True, "admin") ##这行代码调用了......, 实现了......功能,传入 TRUE表示......,"admin"是......调用login_v,实现验证登录,TRUE表示期望登录成功,“admin”是期待登录成功后页面会出现的用户名
7、按照Selenium课程中的方法写一个单元测试类:LoginCases,并调用Login类实现几个登录用例:
1 import unittest
2 from pages.loginPage import Login
3 class LoginCases(unittest.TestCase):
4 # setUpClass方法是所有测试用例前调用的方法
5 @classmethod #类方法(class method)的定义
6 def setUpClass(self):
7 print("测试开始")
8 self.lg = Login(""http://localhost:8090/)
9 # tearDownClass方法是执行完所有测试后调用的方法
10 @classmethod
11 def tearDownClass(self):
12 print('测试结束')
13 ## 用例1(务必以test开头)
14 def test_01(self):
15 #第一个测试用例
16 #用例2
17 def test_02(self):
#第二个测试用例
8、将上课的代码手工实现一遍