小肥羊要进步

Unittest

1.测试框架的作用

  1. 标记和筛选用例
  2. 创建测试数据
  3. 执行用例
  4. 判断结果
  5. 清理测试数据
  6. 生成测试报告
  7. 对接外部工具

 

 

 

2.

执行测试用例的3个方式

1.脚本方式执行 2.模块方式执行 3.用例执行顺序

 

import unittest

class Test(unittest.TestCase):
def test_Happy(self):
self.assertTrue(1)

def test_Apple(self):
pass
#执行方法1-脚本方式
if __name__ == '__main__':
unittest.main()
#执行方式2-命令执行 python -m unittest test.py


3.测试结果
. 代表用例测试通过
F 用例测试失败
E 用例执行出错
s 用例跳过执行

4.TestFixture : 在每个测试方法执行前后自动执行的指令
seuUp/tearDown:每个测试方法执行前后,比如:浏览器启动4次

setUpClass/tearDownClass:每个测试类执行前后,比如:浏览器启动2次   @classmethod   ....cls

setUpModule/tearDownModule:每个测试模块执行前后,比如:浏览器启动1次

 

5.测试执行顺序筛选

if _ _name_ _=='_ _main_ _':

  unittest.main(defaultTest=["TestCase.test_01","TestCase.test_02"])

6.

if _ _name_ _=='_ _main_ _':

  unittest.main()

#1.实例化testLoader,收集测试用例,并且生成 **测试套件**

#2.实例化test Runner,运行测试用例,并且生成结果

#3.判断,是否结束程序

等价于如下(unittest.main()原理如下

if  __name__ == '__main__':
suite=unittest.TestSuite() #测试套件 也就是testloader执行结果
suite.addTest(TestCase("test_Happy"))

runner=unittest.TextTestRunner(verbosity=2) #实例化test Runner
res=runner.run(suite)
print(res)

 执行顺序

1.默认顺序:ASCII

2.修改顺序

2.1 手动添加用例和套件

2.2 修改模的顺序:重写testloader的sort方法

if __name=='__main__':

  def sort(x,y):

    return len(y)-len(x)

  unittest.defaultTestLoader.sortTestMethodUsing=sort #使用新的排序规则 替换旧的

  unittest.main()

 

2.3 指定测试方法的前缀

 

3.生成网页版测试报告

3.1 文件名test开头,框架自动收集

3.2 文件名不是test开头,把文件名传递给unittest

if __main__=='__main__':

  unittest.defaultTestLoader.testMethodPrefix="t_" #新的前缀

  unittest.main()

4.安装第三方包

pip install html -testRunner

4.1指定 HTMLTestRunner

if __main__=='__main__;"

  from HtmlTestRunner import HTMLTestRunner

  runner_argv={

    "output":"./test".

    "combine_reports":True,

}

# 如果把字典作为关键字参数船体,需要**解包

  unittest.main(testRunner=HTMLTestRunner(**runner_argv))

 

HTMLTestRunner参数

1.output="./reports/" 测试报告存放路径

2.report_title=None 测试报告标题

3.combine_reports=False 合并报告到同一个文件

4.open_in_browser=False 自动打开报告

5.template=None自动逸模板位置

 

持续继承 docker

CI runner

接口一般是异步请求

ddt:数据驱动测试

ddt=数据读取+动态生成测试用例

pip install ddt

python装饰器 @ddt.ddt()

 

import unittest

import requests

import openpyxl

def get_data_by_excel(path):

  sheet=openpyxl.load_workbook("path").active  #打开excel

  return sheet.values #读取execl里的数值

使用Green运行unittest   pip install green pytest

 

posted on 2021-02-23 21:33  小肥羊要进步  阅读(197)  评论(0编辑  收藏  举报

导航