关于自己自学自动化测试做的一些笔记,python+selenium+unittest

一、TestCase用法
1、新建一个py文件,要有含义,比如登录,baidu_login,文件里新增一个类,要继承unittest.TestCase,
下面函数是用例,要以test开头
2、命令行的方式执行:python -m unittest -v 模块名.类名.方法名
-m以脚本方式运行一个模块
-v要更详细的输出结果
-k匹配执行,-k *_mm   运行以_mm结尾的,-k mm,运行包含mm的
3、执行结果:.成功、F失败、E错误、S跳过
4、执行规则:Ascll码,0-9,A-Z,a-z

二、套件运行
1、创建一个套件:suite=unittest.TestSuite
2、加载用例:suite.addTest(用例路径),加载单个用例,可加载多次
testcases=[用例路径,用例路径]  suite.addTests(testcases),加载多个用例
testcases=unittest.defaultTestLoader.discover(start_dir='要加载用例的路径',pattern='要匹配的用例,如*.py'
匹配加载很多用例,suite.addTests(testcases)
3、执行套件:unittest.main(defaultTest='suite')或者unittest.TextTestRunner().run(suite)

三、测试固件或测试夹具初始化函数
1、setUP:在每个用例执行前运行,如打开浏览器,加载网页
2、tearDown:在每个用例执行后运行,如测试用例扫尾工作,关闭浏览器
3、setUpClass:在每个类执行前执行一次,如创建数据库,生成日志对象,需要在前面加装饰器,@classmethod
4、tearDownClass:在每个类执行后执行一次,如关闭数据库连接,销毁日志对象需要在前面加装饰器,@classmethod
5、setUpModule:在每个模块执行前执行一次,如创建数据库,生成日志对象,需要在前面加装饰器,@classmethod
4、tearDownModule:在每个模块执行后执行一次

四、封装初始化方法
1、新建一个testInit类,继承unittest.TestCase,然后把初始化函数写在这个类里
2、新建测试用例的类,继承testInit类,这样就可以让测试用例执行初始化方法和继承unittest.TestCase类

五、跳过用例
1、无条件忽略(跳过): 在用例前面加装饰器@unittest.skip("忽略理由")
2、满足条件忽略(跳过):在用例前面加装饰器@unittest.skipIf("条件""忽略理由"),条件满足时忽略
3、不满足条件忽略(跳过):在用例前面加装饰器@unittest.skipUnless("条件""忽略理由"),条件不满足时忽略
4、整个类跳过:可以在类前面加装饰器@unittest.skip("忽略理由")

六、断言
assertEqual(a,b)       断言a=b
assertNotEqual(a,b)       断言a!=b
assertTrue(a)       断言a为真
assertFalse(a)       断言a为假
assertIn(a,b)       断言a在b里面
assertNotIn(a,b)       断言a不在b里面

七、生成测试报告
1、加载用例:suite=unittest.TestSuite
testcases=unittest.defaultTestLoader.discover(start_dir='要加载用例的路径',pattern='要匹配的用例,如*.py'
匹配加载很多用例,suite.addTests(testcases)
2、把HTMLTestRunner.py放在python/lib 目录下
3、在运行的py文件下,打开一个文件file2=open("文档目录","wb")
4、runner=HTMLTestRunner(stream=file2,verbosity=1,title='自动化测试报告',description='测试环境:chrome')
5、执行runner.run(suite)

八、数据驱动DDT
1、ddt是通过装饰器进行调用的
2、@ddt类装饰器,声明这个类使用ddt框架
3、@data函数装饰器,用于给测试用例传递数据
4、@unpack将传输的数据包解包,一般用于元组tuple和列表list
5、@file_data函数装饰器,可直接读取yaml/json文件
6、ddt使用:在类前面加上装饰器@ddt
    在用例前面加上@data(数据),用例加上接收数据的变量,如def 1 (self,args)
    如果传入多个值时,用例会执行多次
    如果传入元组tuple或者列表list,在用例前面加上@unpack解包
    比如@data((1,2),(3,4)) @unpack def jiafa(self,a,b):print(a+b)
7、数字或者字符串,不需要@unpack解包,
    元组和列表可以通过@unpack解包,但是参数的个数必须和解完包后的值的个数一样
    集合无法解包
    字典可以通过@unpack解包,但是参数的名字和个数必须和字典的键保持一致


九、csv文件,excel文件打开

csv文件
1、file=open("文件名","r")    rows=csv.reader(file)

excel文件

2、使用openpyxl打开excel
    加载工作簿:workbook=openpyxl.load_workbook(文件名)
    获取sheet页:sheet=workbook[sheet页名]
    alllist=[]
    for row in range(1,sheet.max_row+1):
        list=[]
        for col in range(1,sheet.max_coiumn+1):
            list.append(sheet.cell(row,col).value)
        alllist.append(list)

十、使用不定长参数时
比如:    def get_ele(self,data,*args):
        driver.find_element(*args).send_keys(data)
正常参数data要写在*args前面


十一、自动化测试框架设计
1、基础框架类:使用selenium
2、封装工具类:这个类主要包括连接数据库、读取配置文件、读取excel文件等基本工具类,
还包括对selenium框架进行二次封装的类
3、封装业务类:这一层采用关键字驱动的自动化测试思想,根据被测对象的特性,设计很多
个不同的业务类,比如登录操作,如果很多个登录的入口,就写一个登录基类,不同入口继承
基类分别实现子类。如果是接口自动化,这个设计起来就比较简单了,有多少个接口就设计多
少个业务类
4、自动化脚本:结合业务测试类进行调用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值