概念
- 什么是接口?
接口是A服务向B服务提供数据的一种方式,所以数据的正确性就很重要了,数据是通过一些逻辑判断得出的。测试的重点就是要保证透出数据的准确性 - 如何做接口测试?
发送请求–>解析结果–>判断结果 - 什么是接口自动化?
将「发送请求–>解析结果–>判断结果」手动触发的过程,做成可重复执行的过程
区别
unittest
- 测试类必须继承unittest.TestCase
- 测试函数必须以”test_”开头
- 测试类必须有unittest.main()方法
pytest
- 测试文件的文件名必须以”test_”开头,或者以”_test”结尾
- 测试类命名必须以”Test”开头
- 测试函数名必须以”test”开头
- 测试类里面不能使用”init”方法
unittest | pytest | |
---|---|---|
用例分类执行 | 默认全部执行,也可以通过加载testsuit进行加载部分用例 | 可通过@pytest.mark来标记类和方法,pytest.main(-m ) 可运行标记类和方法 |
用例前置和后置 | setup、tearDown方法 | pytest中有@pytest.fixture装饰器 |
参数化 | ddt库 | @pytest.mark.parametrize() |
断言 | asserEqual、assertIn、assertTrue、assertFalse | 只有assert |
报告 | HTMLTestRunner | pytest-HTML,allure |
失败重跑 | 无重跑机制 | pytest-retunfailuers |
演示
用IDE创建一个apiTest的项目,目录结构如下,新增一个cases目录,在目录下创建一个test_day1.py测试文件
test_day1.py文件内容
class TestDay1:
def add(self, a, b):
return a + b
def test_promise(self):
assert self.add(2, 3) == 5
main.py文件内容
import pytest as pytest
if __name__ == '__main__':
pytest.main()
执行main.py文件,结果如下
总结
工作中使用最多的工具是postman,它可以很快速的让我实现一个接口的测试,缺点是不能共享,不方便自动触发,不好应用于服务发布卡点