代码改变世界

api接口自动化测试

2024-04-18 17:10  加个小鸡腿  阅读(12)  评论(0编辑  收藏  举报

常见的素质要求一般都需要:python使用经验,unitest框架,pytest框架,appium,CI/CD,自动化测试经验已经成为测试的必修课,有接口自动化测试,有app自动化测试,有web自动化测试,

这里我们先介绍下简单的接口自动化测试,后续补充简单web自动化测试和app自动化测试。

接口自动化测试:

前面我写了两个python脚本,图书管理系统,设计了几个常见的增删改查接口,包含了服务端和客户端,链接如下:

flask框架图书管理系统服务器端 - 加个小鸡腿 - 博客园 (cnblogs.com)

flask框架图书管理系统客户端 - 加个小鸡腿 - 博客园 (cnblogs.com)

现在,我们来将客户端的代码改版成自动化测试的方式, 只修改了其中两个接口,其他结果接口可以参考修改,我们使用的是python的unitest框架,结合request请求来完成的,改版后的代码如下:

import requests
import  unittest

base_url='http://localhost:5000'
class TestMyBook(unittest.TestCase):

    def test_get_all_books(self):
        '''获取图书列表'''
        response=requests.get(f'{base_url}/books')
        if  response.status_code==200:
             print(response.json())
        else:
            print(f'Error:{response.status_code}-{response.text}')
        self.assertEqual(200,response.status_code,"获取图书列表失败")

    def test_add_book(self):
        '''新增图书'''
        book_data = {'title': "add1", 'author': 'add1-author'}
        response = requests.post(f'{base_url}/books', json=book_data)
        if response.status_code == 201:
           print(response.json())
        else:
            print(f'Error:{response.status_code}-{response.text}')
        self.assertEqual(201, response.status_code, "新增图书失败")

if __name__=='__main__':
    suite=unittest.TestLoader().loadTestsFromTestCase(TestMyBook)
    with open('test_result.txt','w',encoding='utf-8') as output:
        runner=unittest.TextTestRunner(stream=output,verbosity=2)
        runner.run(suite)

以上文件名,我们定义位flask_client.py,命令行执行:python flask_client.py后,在同目录下会生成一个有点简陋的测试报告test_result.txt,内容如下:

 如果觉得这个这是报告看着受不了,可以参考我的另一篇博客改成pytest的样子,用pytest 命令生成好看点的测试报告

python+appium+pytest做app自动化测试