1.单元测试
python
import unittest
class UnittestForPy(unittest.TestCase):
#测试方法1
def test_add(self):
x = 3
y = 5
assert x==y,"不等于"
#测试方法2
def test_remove(self):
print("我就看看")
if __name__ == '__main__':
#这里可以执行所有的方法,但是必须以test_开头才可以
unittest.main()
2.常见的断言
python
assertEqual(a, b) a == b
assertNotEqual(a, b) a != b
assertTrue(x) bool(x) is True
assertFalse(x) bool(x) is False
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b
assertNotIn(a, b) a not in b
3.生成html报告
3.1 网上下载HTMLTestRunner.py文件,保存到 venv---lib---site-packages文件夹里就可以了
3.2 代码
python
# -*- coding:utf-8 -*-
import unittest
#中文版
import HTMLTestReportCN
#英文版
# import HTMLTestRunner
#测试用例
#第一个测试类
class MyTestCase(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def testCase1(self):
self.assertEqual(2,2,"testError")
def testCase2(self):
self.assertEqual(2,3,"testError")
def testCase3(self):
self.assertEqual(2,26,"测试错误")
def testCase4(self):
self.assertEqual(2,1,"测试错误")
def testCase5(self):
pass
#第二个测试类
class APITestCase(unittest.TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def testCase1(self):
self.assertEqual(2, 2, "testError")
def testCase2(self):
self.assertEqual(3, 3, "testError")
def testCase3(self):
self.assertEqual(5, 5, "testError")
def testCase4(self):
self.assertEqual(2, 1, "测试错误")
#添加Suite
def Suite():
#定义一个单元测试容器
suiteTest = unittest.TestSuite()
#将测试用例加入到容器
suiteTest.addTest(MyTestCase("testCase1"))
suiteTest.addTest(MyTestCase("testCase2"))
suiteTest.addTest(MyTestCase("testCase3"))
suiteTest.addTest(MyTestCase("testCase4"))
suiteTest.addTest(MyTestCase("testCase5"))
#第二个类的测试内容
suiteTest.addTest(APITestCase("testCase1"))
return suiteTest
'''
问题:代码写的没问题,执行也成功了,但就是无法生成HTMLTestRunner的报告
其实这是编辑器搞得鬼,编辑器为了方便用户执行测试,都有一项功能,可以用编辑器来调用unittest或者nose来执行测试用例,这种情况下,执行的只是用例或者套件,而不是整个文件,写在main里的代码是不会被执行的!!自然无法生成测试报告
我们在如果想要生成测试报告,那么一定要注意右键执行时选择的右键菜单,一定要当做文件执行,不要让编辑器当做用例执行
'''
if __name__ == '__main__':
#确定生成报告的路径
filePath ='D:\\Report_CN.html'
fp = open(filePath,'wb')
#生成报告的Title,描述
runner = HTMLTestReportCN.HTMLTestRunner(
stream=fp,
title='自动化测试报告',
#description='详细测试用例结果',
tester='打印'
)
#运行测试用例
runner.run(Suite())
# 关闭文件,否则会无法生成文件
fp.close()
注意:普通的执行方式为python tests模式,只是单元测试方式来执行,如果要生成html文件的话,要使用python模式,
4.生成xml版报告
4.1 代码
python
import unittest
import xmlrunner
# 导入这个模块
class My(unittest.TestCase):
def test1(self, a, b, c):
self.assertEqual(a + b, c)
if __name__ == '__main__':
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.makeSuite(My))
runner = xmlrunner.XMLTestRunner(output='report') # 指定报告放的目录
runner.run(test_suite)
4.2 生成方式和生成xml文件是一样的,都需要手动调整