04-11 实战方案一(下)unitest
测试开发 实战方案
实战方案一 unittest+ httprunner
引入
正文:
1 断言的增加
2 测试用例装载
class MoudleTestSuite():
'''
这是一个测试套件类,并且提供的可以使用的测试套件方法
example: module.name + api.name
suiteAPI()
example:
'''
def __init__(self,suite=None):
self.suite = suite
def suiteAPI(self):
'''
suite carete method: loadTestsFromTestCase
:return suite
'''
self.suite = \
unittest.TestLoader().loadTestsFromTestCase(test_baiduAPI.APITestCase)
return self.suite
def discoverysuiteAPI(self,filedir=None):
'''
suite carete method: discover
:param filedir:
:return: unittest.TestSuite()
'''
self.filedir = filedir
self.suite = unittest.TestLoader().discover(
start_dir=self.filedir, pattern='test*.py',top_level_dir=None)
# defaultTestLoader 是TestLoader() 的一个实例
# self.suite = unittest.defaultTestLoader.discover(start_dir=self.filedir, pattern='test*.py',top_level_dir=None)
return self.suite
3 写出html测试报告文件
class GenerateReport():
def __init__(self,suite):
self.suite =suite
def createreport(self) -> None:
with (open(conf_common.reportobject["reportfilepath"], 'wb')) as fp:
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
verbosity= conf_common.reportobject["verbosity"],
title=conf_common.reportobject["title"],
description=conf_common.reportobject["description"]
)
runner.run(self.suite,)
4 htmltestrunner源码分析
The simplest way to use this is to invoke its main method. E.g.
import unittest
import HTMLTestRunner
... define your tests ...
if __name__ == '__main__':
HTMLTestRunner.main()
For more customization options, instantiates a HTMLTestRunner object.
HTMLTestRunner is a counterpart to unittest's TextTestRunner. E.g.
# output to a file
fp = file('my_report.html', 'wb')
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title='My unit test',
description='This demonstrates the report output by HTMLTestRunner.'
)
# Use an external stylesheet.
# See the Template_mixin class for more customizable options
runner.STYLESHEET_TMPL = '<link rel="stylesheet" href="my_stylesheet.css" type="text/css">'
# run the test
runner.run(my_test_suite)
这是源码里的用法。
我们采用的是定制的方法。
总结
1 项目很轻巧,只需要额外一个开源的py模块
2 代码行数位60行代码的项目
3 麻雀虽小,五脏俱全

浙公网安备 33010602011771号