1.unittest参数化测试
(1)框架结构
bin 目录;启动测试用例,例如discover
conf 目录;设置常量,例如用例路径等等
lib 目录;存放主逻辑和一些函数
case 目录;存放excel
report目录;专门存放测试报告
import unittest,requests,HTMLTestRunner
from nose_parameterized import parameterized
def req(url,username,pwd):
data={"username":username,"pwd":pwd}
res = requests.get(url,data).text
return res
class My(unittest.TestCase):
@parameterized.expand(
[
("baidu.com","jmy","123456",{"meg":"登录成功"}),
("baidu.com","jmy","123456",{"meg":"登录成功"})
]
)
def test_a(self,url,name,pd,hope):
res = req(url,name,pd)
self.assertEqual(res,hope)
if __name__=='__main__':
suite=unittest.TestSuite()
suite.addTest(unittest.makeSuite(My))
fw = open('res.html','wb')
runner=HTMLTestRunner.HTMLTestRunner(stream=fw,title='接口测试')
runner.run(suite)
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作。
在说unittest之前,先说几个概念:
TestCase 也就是测试用例
TestSuite 多个测试用例集合在一起,就是TestSuite
TestLoader是用来加载TestCase到TestSuite中的
TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息
下面写一个简单的单元测试用例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import unittest
class MyTest(unittest.TestCase):#继承unittest.TestCase
def tearDown(self):
#每个测试用例执行之后做操作
print('111')
def setUp(self):
#每个测试用例执行之前做操作
print(22222)
def test_run(self):
self.assertEqual(1,1)
#测试用例
if __name__ == '__main__':
unittest.main()
|