【接口自动化测试】销售通项目核心功能接口自动化实现

文章目录

  • 前言
  • 一.项目简介
  • 二.合同管理业务接口对象封装和调用
  • 1、实现登录接口对象封装和调用
  •       1.0 登录接口的接口测试文档
  •       1.1 接口对象层(封装)
  •       1.2 测试脚本层(调用)
  • 2、课程新增接口对象封装和调用
  •       2.0 课程新增接口的接口测试文档
  •       2.1 接口对象层(封装)
  •       2.2 测试脚本层(调用)
  • 3、合同上传接口对象封装和调用
  •       3.0 合同上传的接口测试文档
  •       3.1 接口对象层(封装)
  •       3.2 测试脚本层(调用)
  • 4、合同新增接口对象封装和调用
  •       2.0 合同新增接口的接口测试文档
  •       2.1 接口对象层(封装)
  •       2.2 测试脚本层(调用)
  • 三.课程管理核心功能接口自动化测试
  • 1、课程添加单接口自动化测试
  •       1.1 课程添加单接口文档信息
  •       1.2 课程添加成功
  •       1.3 课程添加失败(未登录)
  • 2、课程查询单接口自动化测试
  •       2.1 课程查询单接口文档信息
  •       2.2 课程查询成功
  •       2.3 课程查询失败(用户未登录)
  • 3、课程修改单接口自动化测试
  •       3.1 课程修改单接口文档信息
  •       3.2 课程修改成功
  •       3.3 课程修改失败(用户未登录)
  • 4、课程删除单接口自动化测试
  •       4.1 课程删除单接口文档信息
  •       4.2 课程删除成功
  •       4.3 课程删除失败(用户名为空)
  • 总结


前言


一、项目简介

(1)项目名称:销售通
(2)项目类型:销售管理系统(CRM)
(3)项目角色销售人员、销售经理、财务人员等
(4)项目业务:线索管理、合同管理、课程管理、课程管理、活动管理等业务。

我负责的接口待测接口业务:
需求:完成合同管理业务及相关单模块接口测试。

(1)合同管理业务
  • 登录
  • 添加课程
  • 上传合同
  • 新增合同
(2)课程管理模块
  • 添加课程
  • 修改课程
  • 查询课程
  • 删除课程

 二.合同管理业务接口对象封装和调用

1、实现登录接口对象封装和调用

1.0 登录接口的接口测试文档

接口信息:

1.验证码:

(1)地址:http://kdtx-test.itheima.net/api/captchaImage

(2)方法:get


2.登录:

(1)地址:http://kdtx-test.itheima.net/api/login

(2)方法:Post

(3)请求数据:

(4)请求头:Content-Type: application/json

(5)请求体:{"username": "admin", "password": " admin123","code":"2", "uuid":"验证码接口返回数据"}


1.1 接口对象层(封装)

封装的重要概念:
接口封装时,重点是依据接口文档封装接口信息,需要使用的测试数据是从测试用例传递的、接口方法被调用时需要返回对应的响应结果。

封装是通过根据接口API文档封装,所以定义在API的目录下。


实现的基本步骤:
(1)导包操作:

# 导包
import requests

(2)创建接口的类:

# 创建接口类
class LoginAPI:

(3)创建初始化方法:

初始化方法中需要指定接口的基本信息url。

# 初始化
    def __init__(self):
        # 指定url基本信息
        self.url_verify = "http://kdtx-test.itheima.net/api/captchaImage"
        self.url_login = "http://kdtx-test.itheima.net/api/login"

(4)创建验证码、登录方法:

接口方法被调用时候,需要返回对应的响应结果信息。只有返回之后,才能在测试用例中使用倒响应结果的值。

    # 验证码接口方法
    def get_verify_code(self):
        return requests.get(url=self.url_verify)

    # 登录接口方法
    def login(self, test_data):
        return requests.post(url=self.url_login, json=test_data)

备注:

(1)登录接口方法中的test_data。

因为要从外部传入测试数据,所以在方法定义时候创建一个参数来接收传递的数据。

(2)json = test_data

此处数据是请求体json中的数据。

因为json数据的请求体在request格式中是通过json参数进行处理。即:json = test_data.


实现图示说明:


1.2 测试脚本层(调用)

测试脚本层说明:

  • 重点关注测试数据准备和断言
  • 重点关注业务流程的处理
  • 直接调用接口对象层发送请求

实现的基本步骤:

(1)导包:
导入调用接口对象层中定义的登录接口api.login

# 导包
from api.login import LoginAPI
import pytest

(2)创建测试类:
测试类一般以Test开头进行命名。

# 创建测试类
class TestLoginAPI:

(3)设置前置处理和后置处理

前置处理中先实例化一个登录接口的对象

 # 前置处理
    def setup(self):
        # 实例化接口对象
        self.login_api = LoginAPI()
 # 后置处理
    def teardown(self):
        pass

(4)创建登录成功方法,并实现获取验证码和登录操作

# 1、登录成功
    def test01_login_success(self):
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        print(res_v.status_code)
        print(res_v.json())
        # 打印uuid数据
        print(res_v.json().get("uuid"))

        # 登录
        login_data = {
            "username": "admin",
            "password": "HM_2023_test",
            "code": "2",
            "uuid": res_v.json().get("uuid")# 此处调用验证码中的uuid数据
        }
        res_l = self.login_api.login(test_data=login_data)
        print(res_l.status_code)
        print(res_l.json())

实例图示说明:


输出结果:


2、课程新增接口对象封装和调用

2.0 课程新增接口的接口测试文档

接口信息:

(1)URL:http://kdtx-test.itheima.net/api/clues/course

(2)方法:Post

(3)请求数据:

(4)请求头:{ "Content-Type ": "application/json ", "Authorization": "xxx " }

(5)请求体:{ "name": "测试开发提升课01", "subject": "6","price": 899,"applicablePerson": "2", "info": "测试开发提升课01"}


2.1 接口对象层(封装)

封装的重要概念:
接口封装时,重点是依据接口文档封装接口信息,需要使用的测试数据是从测试用例传递的、接口方法被调用时需要返回对应的响应结果。

封装是通过根据接口API文档封装,所以定义在API的目录下。


实现的基本步骤:
(1)导包操作:

# 导包
import requests

(2)创建接口的类:

# 创建接口类
class CourseAPI:

(3)创建初始化方法:

初始化方法中需要指定接口的基本信息url。

# 初始化
    def __init__(self):
        # 指定url基本信息
        self.url_add_course = "http://kdtx-test.itheima.net/api/clues/course"

(4)创建课程添加方法:

接口方法被调用时候,需要返回对应的响应结果信息。只有返回之后,才能在测试用例中使用倒响应结果的值。

此处方法中定义了test_data, token都是需要从外部接收的数据,所以最终的返回里面也要有响应结果的值。如test_data是json格式的,token是headers格式中的数据。

 def add_course(self, test_data, token):
        return requests.post(url=self.url_add_course, json=test_data, headers={"Authorization": token})

2.2 测试脚本层(调用)

实现的基本步骤:

(1)导包:
导入调用接口对象层中定义的登录接口api.login

# 导包
import pytest
from api.course import CourseAPI

(2)创建测试类:
测试类一般以Test开头进行命名。

# 创建测试类
class TestContractBusiness:
    # 初始化
    token = None

(3)设置前置处理和后置处理

前置处理中先实例化一个登录接口的对象

 # 前置处理
    def setup(self):
        # 实例化接口对象 
        self.course_api = CourseAPI()


    # 后置处理
    def teardown(self):
        pass

(4)创建课程新增方法,并实现课程新增操作

# 2、课程新增成功
    def test02_add_course(self):
        add_data = {"name": "测试开发提升课01", "subject": "6", "price": 899, "applicablePerson": "2",
                    "info": "测试开发提升课01"}
        response = self.course_api.add_course(test_data=add_data, token=TestContractBusiness.token)
        # 提取登录成功之后的token数据并保存在类的属性中
        TestContractBusiness.token = res_l.json().get("token")

3、合同上传接口对象封装和调用

3.0 合同上传的接口测试文档

接口信息:

(1)URL: http://kdtx-test.itheima.net/api/common/upload

(2)方法:Post

(3)请求数据:

(4)请求头:{ "Content-Type ": " multipart/form-data ", "Authorization": "xxx " }

(5)请求体:{" file " : 合同文件"}

思考:

① 如何提交multipart/form-data数据?

通过使用:

requests.请求方法(url, data=None, json=None, headers=None, files=None)

步骤① 读取文件数据

f = open(" test.pdf ", " rb ")

步骤② 设置请求数据

response = requests.post(url=xxx, files= {" file " : f"})


3.1 接口对象层(封装)

实现的基本步骤:
(1)导包操作:

# 导包
import requests

(2)创建接口的类:

# 创建接口类
class ContractAPI:

(3)创建初始化方法:

初始化方法中需要指定接口的基本信息url。

 # 初始化
    def __init__(self):
        self.url_upload = "http://kdtx-test.itheima.net/api/common/upload"

(4)创建课程添加方法:

接口方法被调用时候,需要返回对应的响应结果信息。只有返回之后,才能在测试用例中使用倒响应结果的值。

 # 合同上传接口
    def upload_contract(self, test_data, token):
        return requests.post(url=self.url_upload, files={"file": test_data}, headers={"Authorization":  token})

3.2 测试脚本层(调用)

实现的基本步骤:

(1)导包:
导入调用接口对象层中定义的登录接口api.login

# 导包
import pytest
from api.contract import ContractAPI

(2)创建测试类:
测试类一般以Test开头进行命名。

# 创建测试类
class TestContractBusiness:
    # 初始化
    token = None

(3)设置前置处理和后置处理

前置处理需要先处理验证码获取和登录接口操作,依次为前提才能进行文件上传。

 # 前置处理
    def setup(self):
        # 实例化接口对象
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        self.contract_api = ContractAPI()

    # 1、登录成功
    def test01_login_success(self):
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        print(res_v.status_code)
        print(res_v.json())
        # 打印uuid数据
        print(res_v.json().get("uuid"))

        # 登录
        login_data = {
            "username": "admin",
            "password": "HM_2023_test",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        print(res_l.status_code)
        print(res_l.json())
        # 提取登录成功之后的token数据并保存在类的属性中
        TestContractBusiness.token = res_l.json().get("token")
        print(TestContractBusiness.token)


    # 后置处理
    def teardown(self):
        pass

(4)创建合同上传方法,并实现合同上传操作

 # 3、上传合同成功
    def test03_upload_contract(self):
        # 读取pdf文件数据
        f = open("../data/test.pdf", "rb")
        response = self.contract_api.upload_contract(test_data=f, token=TestContractBusiness.token)
        print(response.json())

 4、合同新增接口对象封装和调用

4.0 合同新增接口的接口测试文档

接口信息:

新增合同:

(1)url地址:http://kdtx-test.itheima.net/api/contract

(2)方法:Post

(3)请求数据:

(4)请求头:{ "Content-Type ": "application/json ", "Authorization": "xxx " }

(5)请求体:{ "name": "测试888", "phone": "13612345678", "contractNo": "HT10012003",

"subject": "6", "courseId": " 99", "channel": "0", "activityId": 77, "fileName": "xxx"}


4.1 接口对象层(封装)

封装的重要概念:
接口封装时,重点是依据接口文档封装接口信息,需要使用的测试数据是从测试用例传递的、接口方法被调用时需要返回对应的响应结果。

封装是通过根据接口API文档封装,所以定义在API的目录下。


实现的基本步骤:
(1)导包操作:

# 导包
import requests

(2)创建接口的类:

# 创建接口类
class ContractAPI:

(3)创建初始化方法:

初始化方法中需要指定接口的基本信息url。

 # 初始化
    def __init__(self):
        self.add_contrat = "http://kdtx-test.itheima.net/api/contract"

(4)创建合同添加方法:

接口方法被调用时候,需要返回对应的响应结果信息。只有返回之后,才能在测试用例中使用倒响应结果的值。

此处方法中定义了test_data, token都是需要从外部接收的数据,所以最终的返回里面也要有响应结果的值。如test_data是json格式的,token是headers格式中的数据。

# 新增合同接口
    def add_contract(self,test_data,token):
        return requests.post(url=self.add_contrat,json=test_data,headers={"Authorization":  token})

4.2 测试脚本层(调用)

实现的基本步骤:

(1)导包:
导入调用接口对象层中定义的登录接口api.login

# 导包
import pytest
from api.contract import ContractAPI

(2)创建测试类:
测试类一般以Test开头进行命名。

# 创建测试类
class TestContractBusiness:
    # 初始化
    token = None

(3)设置前置处理和后置处理

前置处理中先实例化一个登录接口的对象

 # 前置处理
    def setup(self):
        # 实例化接口对象 
        self.contract_api = ContractAPI()


    # 后置处理
    def teardown(self):
        pass

(4)创建课程新增方法,并实现课程新增操作

 # 4、新增合同成功
    def test04_add_contract(self):
        add_contract = {"name": "测试888",
                        "phone": "13612341888",
                        "contractNo": "HT20026194",
                        "subject": "6",
                        "courseId": 99,
                        "channel": "0",
                        "activityId": 77,
                        "fileName": "/profile/upload/2023/01/05/86e5a3b8-b08c-470c-a17d-71375c3a8b9f.pdf"
        }
        response = self.contract_api.add_contract(test_data=add_contract, token=TestContractBusiness.token)
        print(response.json())
        # 提取登录成功之后的token数据并保存在类的属性中
        TestContractBusiness.token = res_l.json().get("token")

1.1 登录单接口文档信息

需求:

  • 完成测试脚本的业务实现
  • 针对响应结果进行断言


1.2 登录成功

登录成功接口文档信息:


登录成功测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理

# 导包
from api.login import LoginAPI


# 创建测试类
class TestLoginAPI:
    # 初始化
    uuid = None

    # 前置处理
    def setup(self):
        # 实例化接口类
        self.login_api = LoginAPI()
        # 获取验证码
        response = self.login_api.get_verify_code()
        print(response.json())
        # 提取验证码接口返回的uuid参数值
        TestLoginAPI.uuid = response.json().get("uuid")
        print(TestLoginAPI.uuid)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建登录成功方法,并实现获取验证码和登录操作

# 登录成功
    def test01_success(self):
        login_data = {
            "username": "manager",
            "password": "123456",
            "code": "2",
            "uuid": TestLoginAPI.uuid
        }
        response = self.login_api.login(test_data=login_data)

步骤3:针对响应结果进行断言

  # 断言响应状态码为200
        assert 200 == response.status_code
        # 断言响应数据包含'成功'
        assert '成功' in response.text
        # 断言响应json数据中code值
        assert 200 == response.json().get("code")

断言依据:


1.3 登录失败(用户名为空)

登录失败(用户名为空)文档信息:


登录成功测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI


# 创建测试类
class TestLoginAPI:
    # 初始化
    uuid = None

    # 前置处理
    def setup(self):
        # 实例化接口类
        self.login_api = LoginAPI()
        # 获取验证码
        response = self.login_api.get_verify_code()
        print(response.json())
        # 提取验证码接口返回的uuid参数值
        TestLoginAPI.uuid = response.json().get("uuid")
        print(TestLoginAPI.uuid)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建登录失败(用户名为空)方法

# 登录失败(用户名为空)
    def test02_without_username(self):
        login_data = {
            "username": "",//此处用户名设置为空
            "password": "123456",
            "code": "2",
            "uuid": TestLoginAPI.uuid
        }
        response = self.login_api.login(test_data=login_data)

步骤3:针对响应结果进行断言

# 断言响应状态码为200
        assert 200 == response.status_code
        # 断言响应数据包含'错误'
        assert '错误' in response.text
        # 断言响应json数据中code值
        assert 500 == response.json().get("code")

断言依据:


三.课程管理核心功能接口自动化测试

1、课程添加单接口自动化测试

1.1 课程添加单接口文档信息

需求:

完成测试脚本的业务实现

针对响应结果进行断言


1.2 课程添加成功

课程添加成功成功测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 创建测试类
class TestCourseAPI:
    # 初始化
    TOKEN = None

    # 前置处理
    def setup(self):
        # 初始化接口类
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        # 登录成功
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        # 登录
        login_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        # 提取登录成功的token数据并保存
        TestCourseAPI.TOKEN = res_l.json().get("token")
        print(TestCourseAPI.TOKEN)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建课程添加成功方法

 # 课程添加成功
    def test01_add_success(self):
        add_data = {
            "name": "测试开发提升课01",
            "subject": "6",
            "price": 899,
            "applicablePerson": "2"
        }
        response = self.course_api.add_course(test_data=add_data, token=TestCourseAPI.TOKEN)
        print(response.json())

步骤3:针对响应结果进行断言

 # 断言响应状态码
        assert 200 == response.status_code
        # 断言返回数据中包含指定的文字
        assert "成功" in response.text
        # 断言json返回数据code值
        assert 200 == response.json().get("code")

断言依据:


1.3 课程添加失败(未登录)

 课程添加失败(未登录)测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 创建测试类
class TestCourseAPI:
    # 初始化
    TOKEN = None

    # 前置处理
    def setup(self):
        # 初始化接口类
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        # 登录成功
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        # 登录
        login_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        # 提取登录成功的token数据并保存
        TestCourseAPI.TOKEN = res_l.json().get("token")
        print(TestCourseAPI.TOKEN)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建课程添加失败(未登录)

# 课程添加失败(未登录)
    def test02_add_fail(self):
        add_data = {
            "name": "测试开发提升课02",
            "subject": "6",
            "price": 899,
            "applicablePerson": "2"
        }
        response = self.course_api.add_course(test_data=add_data, token="xxx")
        print(response.json())

步骤3:针对响应结果进行断言

# 断言响应状态码
        assert 200 == response.status_code
        # 断言返回数据中包含指定的文字
        assert "认证失败" in response.text
        # 断言json返回数据code值
        assert 401 == response.json().get("code")

断言依据:


2、课程查询单接口自动化测试

2.1 课程查询单接口文档信息

需求:

完成测试脚本的业务实现

针对响应结果进行断言


2.2 课程查询成功

 

 课程查询成功测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 创建测试类
class TestCourseAPI:
    # 初始化
    TOKEN = None

    # 前置处理
    def setup(self):
        # 初始化接口类
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        # 登录成功
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        # 登录
        login_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        # 提取登录成功的token数据并保存
        TestCourseAPI.TOKEN = res_l.json().get("token")
        print(TestCourseAPI.TOKEN)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建课程查询成功

# 查询存在的课程
    def test01_select_success(self):
        response = self.course_api.select_course(test_data="?name=测试开发提升课01", token=TestCourseAPI.TOKEN)
        print(response.json())

步骤3:针对响应结果进行断言

     # 断言响应状态码
        assert 200 == response.status_code
        # 断言msg中包含指定的文字
        assert "成功" in response.text
        # 断言json返回数据中code值
        assert 200 == response.json().get("code")

断言依据:


2.3 课程查询失败(用户未登录)

 课程查询失败(用户未登录)测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 创建测试类
class TestCourseAPI:
    # 初始化
    TOKEN = None

    # 前置处理
    def setup(self):
        # 初始化接口类
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        # 登录成功
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        # 登录
        login_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        # 提取登录成功的token数据并保存
        TestCourseAPI.TOKEN = res_l.json().get("token")
        print(TestCourseAPI.TOKEN)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建课程查询成功

# 查询失败(用户未登录)
    def test02_select_fail(self):
        response = self.course_api.select_course(test_data="?subject=6", token="xxx")
        print(response.json())

步骤3:针对响应结果进行断言

   # 断言响应状态码
        assert 200 == response.status_code
        # 断言msg中包含指定的文字
        assert "认证失败" in response.text
        # 断言json返回数据中code值
        assert 401 == response.json().get("code")

断言依据:


3、课程修改单接口自动化测试

3.1 课程修改单接口文档信息

需求:

完成测试脚本的业务实现

针对响应结果进行断言


3.2 课程修改成功

课程修改成功测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 创建测试类
class TestCourseAPI:
    # 初始化
    TOKEN = None

    # 前置处理
    def setup(self):
        # 初始化接口类
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        # 登录成功
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        # 登录
        login_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        # 提取登录成功的token数据并保存
        TestCourseAPI.TOKEN = res_l.json().get("token")
        print(TestCourseAPI.TOKEN)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建课程修改成功

 # 课程修改成功
    def test01_update_success(self):
        update_data = {
            "id": 109,
            "name": "接口测试001",
            "subject": "6",
            "price": 998,
            "applicablePerson": "2",
            "info": "课程介绍001"
        }
        response = self.course_api.update_course(test_data=update_data, token=TestCourseAPI.TOKEN)
        print(response.json())

步骤3:针对响应结果进行断言

# 断言响应状态码
        assert 200 == response.status_code
        # 断言返回消息
        assert "成功" in response.text
        # 断言code值
        assert 200 == response.json().get("code")

断言依据:


3.3 课程修改失败(用户未登录)

 课程修改失败(用户未登录)测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 创建测试类
class TestCourseAPI:
    # 初始化
    TOKEN = None

    # 前置处理
    def setup(self):
        # 初始化接口类
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        # 登录成功
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        # 登录
        login_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        # 提取登录成功的token数据并保存
        TestCourseAPI.TOKEN = res_l.json().get("token")
        print(TestCourseAPI.TOKEN)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:创建课程修改成功

# 课程修改失败(未登录)
    def test02_update_fail(self):
        update_data = {
            "id": 109,
            "name": "接口测试001",
            "subject": "6",
            "price": 998,
            "applicablePerson": "2",
            "info": "课程介绍001"
        }
        response = self.course_api.update_course(test_data=update_data, token="xxx")
        print(response.json())

步骤3:针对响应结果进行断言

# 断言响应状态码
        assert 200 == response.status_code
        # 断言返回消息
        assert "认证失败" in response.text
        # 断言code值
        assert 401 == response.json().get("code")

断言依据:


4、课程删除单接口自动化测试

4.1 课程删除单接口文档信息

需求:

完成测试脚本的业务实现

针对响应结果进行断言


4.2 课程删除成功

课程删除成功测试脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 创建测试类
class TestCourseAPI:
    # 初始化
    TOKEN = None

    # 前置处理
    def setup(self):
        # 初始化接口类
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        # 登录成功
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        # 登录
        login_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        # 提取登录成功的token数据并保存
        TestCourseAPI.TOKEN = res_l.json().get("token")
        print(TestCourseAPI.TOKEN)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:课程删除成功

  # 课程删除成功
    def test01_delete_success(self):
        response = self.course_api.delete_course(course_id=110, token=TestCourseAPI.TOKEN)
        print(response.json())

步骤3:针对响应结果进行断言

 # 断言响应状态码
        assert 200 == response.status_code
        # 断言返回消息
        assert "成功" in response.text
        # 断言code值
        assert 200 == response.json().get("code")

断言依据:


4.3 课程删除失败(用户名为空)

课程删除失败(用户名为空)脚本层编写:

实现步骤:

步骤1:导包、创建测试类、前置,后置处理(和登录成功一样的)

# 导包
from api.login import LoginAPI
from api.course import CourseAPI


# 创建测试类
class TestCourseAPI:
    # 初始化
    TOKEN = None

    # 前置处理
    def setup(self):
        # 初始化接口类
        self.login_api = LoginAPI()
        self.course_api = CourseAPI()
        # 登录成功
        # 获取验证码
        res_v = self.login_api.get_verify_code()
        # 登录
        login_data = {
            "username": "admin",
            "password": "admin123",
            "code": "2",
            "uuid": res_v.json().get("uuid")
        }
        res_l = self.login_api.login(test_data=login_data)
        # 提取登录成功的token数据并保存
        TestCourseAPI.TOKEN = res_l.json().get("token")
        print(TestCourseAPI.TOKEN)

    # 后置处理
    def teardown(self):
        pass

前置处理是处理获取验证码的uuid信息,用于登录接口使用。


步骤2:课程删除失败(用户名为空)

# 课程删除失败(用户未登录)
    def test03_delete_fail(self):
        response = self.course_api.delete_course(course_id=110, token="xxx")
        print(response.json())

步骤3:针对响应结果进行断言

  # 断言响应状态码
        assert 200 == response.status_code
        # 断言返回消息
        assert "认证失败" in response.text
        # 断言code值
        assert 401 == response.json().get("code")

断言依据:


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值