unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。有关python和unittest的基础知识部分就不细说了,大家可自行百度进行深入了解哦,以下是整个unittest四个比较重要的概念。
成都创新互联云计算的互联网服务提供商,拥有超过13年的服务器租用、重庆服务器托管、云服务器、网络空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、网络空间、域名与空间、VPS主机、云服务器、香港云服务器、免备案服务器等。test fixture
test case
test suite
test runner
test fixture:简单来说就是做一些测试过程中需要准备的东西,比如创建临时的数据库、文件和目录等,其中 setUp() 和 setDown() 是最常用的方法。
test case:用户自定义的测试case的基类,调用run()方法,会依次调用setUP方法、执行用例的方法、tearDown()方法。
test suite:测试用例集合,可以通过addTest()方法手动增加Test Case,也可通过TestLoader自动添加Test Case,TestLoader在添加用例时,会没有顺序。
test runner:运行测试用例的驱动类,可以执行TestCase,也可执行TestSuite。执行后TestCase和Testsuite会自动管理TestResult。
下面贴上简单unittest的示例代码:
import unittest
import HTMLTestRunner
import time
class TestCases(unittest.TestCase):
def setUp(self):
print("每一条case执行之前都会执行这个方法")
def tearDown(self):
print("每一条case执行之后都会执行这个方法\n")
def test_testcase1(self):
print("这是一条测试用例case1")
a = "hello"
try:
self.assertTrue(a.isalpha())
print("测试通过")
except Exception as e:
print("出错啦,错误结果是%s" % e)
print("failed")
raise e
def test_testcase2(self):
print("这是一条测试用例case2")
b = "123"
try:
self.assertTrue(b.isalpha())
print("测试通过")
except Exception as e:
print("出错啦,错误结果是%s" % e)
print("failed")
raise e
def test_testcase3(self):
print("这是一条测试用例case3")
c = " "
try:
self.assertTrue(c.isalpha())
print("测试通过")
except Exception as e:
print("出错啦,错误结果是%s" % e)
print("failed")
raise e
'''
if __name__ == "__main__":
unittest.main()
写上这段代码可以在命令行直接运行model.py,而且用例全部执行
'''
"""
加载测试用例,方法不仅这种,还有利用loader的方法
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestCases))
or
suite.addTest(loader.loadTestsFromModule(model))
"""
suite = unittest.TestSuite()
# suite.addTest("test_testcase2") # 这里我写错了,要加上模块
suite.addTest(TestCases('test_testcase3'))
"""
指定测试报告的路径并且定义报告名称格式
"""
report_dir = "../Test report"
now = time.strftime("%Y-%m-%d %H-%M-%S")
reportname = report_dir + "/" + now + " Test report.html"
"""
运行用例并生成测试报告
"""
with open(reportname, "wb+") as file:
runner = HTMLTestRunner.HTMLTestRunner(file, 2, title="Model test report",
description="Hello testers! This is the description of Model test"
"report")
runner.run(suite)
unittest模块小结:
关于这个模块,以前自己学习这个模块的时候,就不是很懂,这两天总算是略有收获。我在做示例时候有了新的发现:不能把断言放到try语句中并且是可以被except的异常类包含的,否则就不能通过断言来设置测试用例的结果。
睿江云官网链接:http://www.eflycloud.com/#register?salesID=6DGNUTUAV
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。