使用UnitTest编写接口自动化脚本

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才能够生成测试报告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值