¶你们自动化用例是怎么管理的
- 所有用例都是放在 test_case的目录下的统一管理的。
- 每个某块一个.py文件,数据独立放在excel表格中
- 所有的具体用例脚本都是依据 unittest来编写的,利用ddt模型的装饰器来引用数据
- 然后跑用例这块,主要用的是 unittest框架来统一加载用例,并执行用例的.
如果要全量跑,调用 unittest中的 defaultTestLoader.discover这个函数来
加载 test_case目录下的所有.py文件。
¶WebUI自动化都用到过哪些库
Selenium库 里面封装了丰富的对浏览器,页面元素进行操作的方法。
Xlrd库 主要用来实现对excel表格数据进行读取的APl
Pymysql库 主要用来操作数据库的
Ddt库 主要用来实现数据驱动的
Re库 主要用来提取html页面数据的
Unittest库 主要用来编写用例,管理用例,执行用例的。
¶Unittest框架的原理
Unittest框架有几个大组件,1.测试固件( setUp,tearDown)
2.测试用例 3.测试套件 4.加载器 5.运行器 6.测试结果
首先我们需要创建测试用例,然后利用加载器讲用例加载到测试套件中,并创建一个执行器,
去执行测试条件中的所有用例。
它可以帮我们进行管理用例,统计加载执行用例,批量跑用例。
¶Unittest框架有哪些组件
test fixture(测试固件):
包含一个 Setup()方法/函数,tearDown()方法/函数,用例执行之前都会先执行 Setup()方法/函数主要是完成一些准备初始化的工作,比如创建临时的数据库,文件和目录,用例数据读取,浏览器的打开等,用例执行完成之后,会执行 tearDown()方法/函数,完成一些清理回收的工作,比如数据库断开,关闭浏览器。
(1)比如说在这个测试用例中需要访问数据库,那么可以在seUp()中建立数据库连接以及进行一些初始化,在 tearDown()中清除在数据库中产生的数据,然后关闭连接,注意 tear Down的过程很重要,要为以后的 TestCase留下一个干净的环境。
test case(测试用例):
什么是测试用例呢?
就是一个完整的测试流程包括测试前准备环境的搭建( setUp),以及测试后环境的还原( tearDown),还有包括用例方法,每个用例方法都必须要以test开头。
test suite(测试套件):
多个测试用例的集合就是 suite,一个 suite可以包含多个测试用例,也可以嵌套suite.可以通过 addTest()方法手动增加 TestCase,也可通过 TestLoader自动添加TestCase, TestLoader在添加用例时,会没有顺序。
test runner(运行器):
用来执行测试套件中测试用例的,最终执行完成之后会生成一个测试结果。
TestLoader(加载器):用来加载用例,把用例加载到测试套件中
Test Result(测试结果):包括运行了多少测试用例,成功了多少,失败了多少等信息。
¶Unittest框架如何使用
- 导包
import unittest |
2.定义一个类继承 unittest.TestCase基类
重写 setUp(),tearDown()方法
3.setUp()方法实现一个初始化的准备工作,比如,实例化 webdriver对象,对 driver进行初始化配置,连接数据库…
4.tearDown()方法实现释放资源的任务。
编写用例方法,用例方法必须以test开头
- Unittest如何去运行多个文件或者整个目录
因为我们用例全部是放在 test_case目录下统一管理的,基本每个某块都是一个.py文件,要全量跑的话,需要调用 unittest.default.discover()函数,指定用例目录的路径,加载所有的.py文件,它会自动创建测试套件,井把用例加入测试套件中,然后利用unittest.TestRunner()创建一个执行器利用这个执行器去运行测试雷件中的所有用例。
¶如何生成自动化测试报告
我们当时用的是 HtmIReport这个库来生成自动化测试报告的。
安装
pip install HTMLReport
使用方法# 测试用例执行器
runner= HTMLReport.TestRunner(
report_file_name='test’, #报告文件名,如果未赋值,将采用"test+时间戳"
output_path='report’, #保存文件夹名,默认" report"
tite=’测试报告’, #报告标题,默认"测试报告"
description=’无测试描述’ #报告描述,默认"测试描述"
thread_count=1, #并发线程数量(无序执行测试),默认数量 1
thread_start_wait=3, #各线程启动延迟,默认0s
sequential_execution=False. #是否按照套件添加( addTests)顺序执行,
#会等待一个 addTests执行完成,再执行下一个,默认 False
#如果用例中存在 tearDownClass,建议设置为True,
#否则 tearDownClass将会在所有用例线程执行完后才会执行
# lang='e
lang='cn' #支持中文与英文,默认中文
)
#执行测试用例套件
runner.run(suite)