欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

十二、unittest的使用及断言

时间:2023-04-24

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)
```

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。