unittest的使用:
1、定义一个测试用例类,必须继承unittest模块中的TestCase
2、测试用例类中,一个test开头的方法就是一条测试用例
3、将测试用例执行的代码逻辑写到对应的方法中
第一步:准备用例数据
第二步:调用被测的功能函数(发送请求调用接口),获取实际结果
第三部:断言
自定义一个功能函数:
```python
def login_dxc(username=None, password=None):
"""
登录方法
:param username: 账号
:param password: 密码
:return: dict
"""
if username != None and password != None:
if username == "duanxc" and password == 123456:
return {"code": 0, "msg": "登录成功"}
else:
return {"code": 1, "msg": "账号和密码不正确"}
else:
return {"code": 1, "msg": "所有参数不能为空"}
```
创建测试类:
```python
import unittest
from login import login_dxc
class Testlogin(unittest.TestCase):
de f test_login(self):
# 第一步:准备用例数据
params = {"username": "duanxc", "password": 123456}
expected = {'code': 0, 'msg': '登录成功'}
# 第二步:调用被测的功能函数(发送请求调用接口),获取实际结果
#**对字典进行拆包
res = login_dxc(**params)
# 第三部:断言
assert expected == res
```
```python
import unittest
# 一、创建测试套件,加载测试用例到套件
# 1、# 创建一个测试套件
# suite = unittest.TestSuite()
# 2、# 创建一个用例加载器
# loader = unittest.TestLoader()
# 3、#加载测试用例到测试套件
# suite.addTest(loader.discover(r"E:Studytestcases"))
# 简写
suite = unittest.defaultTestLoader.discover(r"E:Studytestcases")
# 二、创建一个测试用例运行程序
runner = unittest.TextTestRunner()
#三、运行测试用例
runner.run(suite)
```
```python
import unittest
from unittestreport import TestRunner
suite = unittest.defaultTestLoader.discover(r"E:Studytestcases")
runner = TestRunner(suite)
runner.run()
```
fixture:测试夹具
用例级别:
1、setUp:用例级别的前置。每条测试用例执行前都会执行
2、tearDown:用例级别的后置,每条测试用例执行之后都会执行
```python
class Testlogin(unittest.TestCase):
def setUp(self) -> None:
print("每条测试用例执行之前的操作")
def tearDown(self) -> None:
print("每条测试用例执行之后的操作")
def test_login(self):
print("第一条测试用例")
```
测试类级别:
1、setUpClass:类级别的前置。类执行前都会执行
2、tearDownClass:类级别的后置,类执行之后都会执行
```python
import unittest
class Testlogin(unittest.TestCase):
#注意点:声明这是一个类方法,要不然会报错
@classmethod
def setUpClass(cls) -> None:
print("执行测试类之前的操作")
@classmethod
def tearDownClass(cls) -> None:
print("执行测试类之后的操作")
def setUp(self) -> None:
print("每条测试用例执行之前的操作")
def tearDown(self) -> None:
print("每条测试用例执行之后的操作")
def test_login(self):
print("第一条测试用例")
def test_login_user_error(self):
print("第二条测试用例")
def test_login_psw_error(self):
print("第三条测试用例")
if __name__ == '__main__':
unittest.main()
```
unittest断言:
1、assertEqual(a,b) a==b
2、assertNotEqual(a,b) a!=b
3、assertTrue(x) bool(x)is True
4、assertFalse(x) bool (x)is False
5、assertIs(a,b) a is b
6、assertIsNot(a,b) a is not b
7、assertIn(a,b) a in b
8、assertNotIn(a,b) a not in b
断言示例:
```python
def test_login_user_error(self):
print("第二条测试用例")
# 预期结果
a={"登录成功"}
# 实际结果
b={'登录成功'}
#a等于b
self.assertEqual(a,b)
def test_login_psw_error(self):
print("第三条测试用例")
# 预期结果
a = "11,22,33"
# 实际结果
b = "11,22,33,44,55"
#b包含a
self.assertIn(a,b)
```