放置 testsuite creat 包含 操作 单元测试 框架 true
1.unittest 单元测试框架文件结构
unittest 是 python 单元测试框架之一, unittest 测试框架的主要文件结构:
File
>report
>all_case.py
>test_case
>__init__.py
>test_case1.....
>public
>__init__.py
>login.py
>loginout.py
test_case 文件夹主要存放测试用例,且测试用例命名以 test_开头
public 文件夹是 test_case 文件夹的子文件夹,主要存放公共模块,例如登录退出模块
report 文件夹主要存放在测试用例执行完成后生成的测试报告
all_case 脚本文件是主要的执行脚本,该脚本集合所有测试用例,执行所有的测试用例
2.unittest 框架的最简单结构
在 selenium + python 自动化测试 unittest 框架学习(一)selenium 原理及应用这篇中说道可以将录制的浏览器行为导出成指定的编程语言,如果我们先是通过 Selenium ide 录制后导出的 python 脚本,那么可以发现每一个脚本的都会有这样一个简单的结构,先忽略那些判断元素是否存在的函数。其基本的结构如下所示:
setUp()
tearDown()
test_case1()
unittest.main()
setUp: 初始化函数,每一个测试用例执行之前都会执行一遍
tearDown: 测试用例执行完成后的浏览器退出等清理操作
test_case1(): 编写的测试用例脚本
unittest.main():自动执行方法名为 test_开头的方法
3.unittest 测试框架优化结构 2
单单一个脚本不可能包含所有的测试用例,所以不同的测试用例可以写成不同的测试用例脚本放置在 test_case 文件夹中,那么执行测试用例的时候我们需要一个测试套件 TestSuite 来加载所有的测试用例脚本,添加测试用例的方法 addTest(),并且使用 TextTestRunner 运行测试脚本。
该结构的缺点是每一个测试用例的增加都要添加一条 addTest() 方法,这就增加自动化脚本上的繁琐,所以我们可以想办法自动加载符合条件的测试用例
4.unittest 测试框架优化结构 3
该结构简化了一些步骤,即不用先创建测试套件,然后通过添加测试用例的方式,将测试用例逐条加载,TestLoader 下的 discover 方法可以递归查询其指定路径下的子目录下符合条件的测试用例加载。
test_dir = './'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')
执行测试用例
实例化 TextTestRunner 类
runner=unittest.TextTestRunner()
使用 run() 方法运行测试套件(即运行测试套件中的所有用例)
runner.run(discover)
5.unittest 执行文件 all_case.py 代码结构如下:
- # coding=utf-8
- import unittest
- import htmlTestRunner
- import time
- from test_case.public import login
- def createsuit():
- #创建测试用例集
- testunit = unittest.TestSuite()
- #判断是否为测试用例,自动加载测试用例到测试套件中
- cslist = "D:\\fcj\\study\\seleniumtest\\test_case"
- #discover方法定义
- discover = unittest.defaultTestLoader.discover(
- #测试用例放置的文件夹名
- cslist,
- pattern = 'test_*.py',
- top_level_dir = None
- )
- #discover方法筛选出来的用例,循环添加到测试套件中
- for test_suite in discover:
- testunit.addTests(test_suite)
- print(testunit)
- return testunit
- alltestnames = createsuit()
- if __name__ == "__main__":
- now = time.strftime('%Y-%m-%d-%H_%M_%S',time.localtime(time.time()))
- #定义报告存放路径
- filename = 'D:\\fcj\\study\\seleniumtest\\report\\'+now+'result.html'
- fp = open(filename,'wb')
- #定义测试报告
- runner = HTMLTestRunner.HTMLTestRunner(
- stream = fp,
- title = u'A项目后台测试报告',
- description = u'用例执行情况:'
- )
- #执行测试
- runner.run(alltestnames)
- fp.close()
selenium + python 自动化测试 unittest 框架学习(二)
来源: http://www.bubuko.com/infodetail-2270450.html