1、创建测试用例类,里面定义一个测试接口的方法
根据接口文档编程测试用例方法,接口文档如下
看接口文档,主要看请求RUL、请求类型、请求参数类型(一般是application/json)、请求参数和请求结果。
针对这个接口文档,是需要定义一个http请求登录接口的测试用例,然后根据请求结果判断是否是预期结果。
1)定义测试用例方法:
# 1. 导入requests库
import requests
# 定义一个登录方法,由于用户登录需要传入用户名、密码、验证码。所以方法需要定义三个形参,分别对应用户# 需要输入的用户名、密码、验证码
def login(userName, passWord, code):
# 调用登录接口,发送http请求需要requests类的方法,所以需要导包,根据接口文档中定义,请求方式为
# post请求,请求参数类型为form,所以参数应该放在data里面
# 定义请求参数的data
data = {
"userName": userName, # 前面引号里面是接口文档中定义的参数名,后面为login()方法中传入的参数
"passWord": passWord
}
response = requests.post("这里写登录接口的地址", data=data);
# 返回请求结果
return response;
上面定义好了测试用例,然后定义测试方法
2)定义测试方法
跟上面定义测试用例相似,也是定义一个方法,但是方法中调用测试用例方法就行,因为调用登录的接口逻辑已经写在上面的方法里面了
# 导入unittest包
import unittest
# 导入login测试用例方法
import login
class TestLogin(unittest.TestCase):
# 定义测试方法,测试方法中也要有用户名,用户密码,验证码等参数,由于这些参数相当于用户输入的,所以
# 可以输入任何参数,所以这里定义为形参
def test_login(self, userName, passWord, code):
# 调用测试用例方法,由于测试用例方法和测试类不是在一个文件中,所以需要导包,login方法需要传入
# 参数就是测试方法中传入的参数
response = login(userName, passWord, code);
#使用断言判断是否请求成功,获取response里面的状态码
self.assertEqual(response.code, 200)
由于测试方法中的用户名、密码、验证码需要手动输入的,所以每次调用需要传不同的参数,参数可以写在文件中,通过with open来读取参数的文件,然后通过@parameterized.expand()来自动将参数列表循环带入方法,然后循环每次使用不通的参数调用方法
# 导入unittest包
import unittest
# 导入login测试用例方法
import login
class TestLogin(unittest.TestCase):
# 定义测试方法,测试方法中也要有用户名,用户密码,验证码等参数,由于这些参数相当于用户输入的,所以
# 可以输入任何参数,所以这里定义为形参
# 定义参数列表,里面的小括号里面数据按顺序分别是账号、密码、验证码,这些即为测试的时候需要准备的数据
test_data = [(1, 2, 3), (3, 4, 7), (4, 5, 9), (5, 6, 11), (6, 7, 13)]
@parameterized.expand(test_data) # 这个注解自动将参数带入方法了
def test_login(self, userName, passWord, code):
# 调用测试用例方法,由于测试用例方法和测试类不是在一个文件中,所以需要导包,login方法需要传入
# 参数就是测试方法中传入的参数
response = login(userName, passWord, code);
#使用断言判断是否请求成功,获取response里面的状态码
self.assertEqual(response.code, 200)
上面的程序是直接将参数写在了一个集合中,一般会将参数写在一个文件中,所以需要读取文件获取到参数,所以需要定义一个方法去读取文件中的参数,新建一个文件
import json
def build_data():
with open('这里写自己的文件路径(D:/XXX)', encoding='utf-8') as f:
data_list = json.load(f)
return data_list
然后@parameterized.expand(build_data()),这个注解中就直接写build_data()方法就可以将文件中的参数读取出来并带入方法中
3)编写自动化接口测试程序
import unittest
from htmltestreport import HTMLTestReport
# 导入测试方法
from 自己的TestLogin类的文件名 import TestLogin
# 实例化套件对象
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestLogin))
# 实例化运行对象
runner = HTMLTestReport('test_login.html', title='加法函数测试报告',
description='python 3.6 pycharm 2019.3')
runner.run(suite)
使用的Runner为HTMLTestReport才能够生成测试报告