2024大连师资培训会环境准备-Web/App/接口

测试用例管理与测试报告

环境准备:pytest / allure /python / pycharm

完成一个基本的用例结构

功能测试用例基本结构

  1. 用例模块
  2. 用例标题
  3. 前提条件
  4. 用例步骤
  5. 用例优先级(选择)
  6. 预期结果
  7. 实际结果
  • 自动化测试的用例结构和功能测试保持一致。
  • 自动化测试框架的命名规则
功能测试 对应自动化测试框架 测试报告 自动化测试规则
用例模块 测试文件、测试类 test_ 开头或者 Test
用例标题 测试方法/函数 test_ 开头
前提条件 setup_method() 方法 setup_method()
用例步骤 对应测试方法里面的实现内容 with allure.step(“测试步骤操作”) 按照功能测试实现
用例优先级(选择) @pytest.mark.p1 Tags 执行的时候需要使用 -m=“标签名称”
预期结果 assert 实际结果 == 预期结果 直接体现 断言
实际结果

生成一个测试报告

# pytest 测试文件名称  制定测试报告生成路径  -m 表示指定用例执行
pytest test_ceshiren2.py --alluredir=result3 -m=p1

# allure 执行 上面生成的测试报告数据,生成一个测试报告服务进行查看
allure serve result3

相关源码

"""
1. 用例模块
1. 用例标题
1. 前提条件
1. 用例步骤
1. 用例优先级(选择)
1. 预期结果
1. 实际结果
"""
import allure
import pytest


# 1. 用例模块
# 类名: Test 大写开头
class TestCeshiren:
    # 前提条件: 在每个用例执行之前执行
    def setup_method(self):
        pass
    # test_ 开否
    # 用例标题
    @pytest.mark.p2
    @allure.title("查找成功的测试")
    def test_search(self):
        a = 1
        # 用例步骤
        with allure.step("打开测试页面"):
            print("操作 1")
        with allure.step("进入搜索页面"):
            print("操作 2")
        with allure.step("输入有记录的搜索关键字比如Appium"):
            print("操作 3")
        with allure.step("获取搜索结果"):
            print("操作 3")
        # 判断实际结果和预期结果是否相等
        assert a == 1

    # 用例2
    # 用例优先级
    @pytest.mark.p1
    @allure.title("查找失败的异常场景测试")
    def test_search_fail(self):
        act = 1
        expect = 2
        assert act == expect

自动化测试

  • 安装 selenium
  • 谷歌浏览器或者Firefox 浏览器。
  • 配置对应的浏览器驱动
import time

import allure
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By


# 1. 用例模块
# 类名: Test 大写开头
class TestCeshiren:
    # 前提条件: 在每个用例执行之前执行
    def setup_method(self):
        pass
    # test_ 开否
    # 用例标题
    @pytest.mark.p2
    @allure.title("查找成功的测试")
    def test_search(self):
        # 初始化浏览器,获得一个浏览器对象
        driver = webdriver.Chrome()
        # 用例步骤
        with allure.step("打开测试人主页"):
            # 调用浏览器对象的打开网页方法
            driver.get("https://ceshiren.com/")
            # 强制等待
            time.sleep(1)
        with allure.step("进入搜索页面"):
            # 获取页面元素对象
            driver.find_element(By.ID, "search-button").click()
            driver.find_element(By.CLASS_NAME, "searching").click()
        with allure.step("输入有记录的搜索关键字比如Appium"):
            driver.find_element(By.CSS_SELECTOR, "[placeholder='搜索']").send_keys("Appium")
            driver.find_element(By.CSS_SELECTOR, ".search-bar button").click()
            time.sleep(1)
        with allure.step("获取搜索结果"):
            res = driver.find_element(By.CSS_SELECTOR, ".topic-title").text
            # 截图
            driver.get_screenshot_as_file("截图.png")
            # 把截图结合到测试报告中
            allure.attach.file("截图.png",
            name = "图片",
            attachment_type = allure.attachment_type.PNG,
            extension = "png")
            # 判断实际结果和预期结果是否相等,判断获取到的文本中是否包含appium
        assert "appium" in res

    # 用例2
    # 用例优先级
    @pytest.mark.p1
    @allure.title("查找失败的异常场景测试")
    def test_search_fail(self):
        act = 1
        expect = 2
        assert act == expect

接口Mock

定制匹配规则

接口测试

功能测试 对应自动化测试框架 测试报告 自动化测试规则 postman
用例模块 测试文件、测试类 test_ 开头或者 Test collections
用例标题 测试方法/函数 test_ 开头 requests接口
前提条件 setup_method() 方法 setup_method() pre req
用例步骤 对应测试方法里面的实现内容 with allure.step(“测试步骤操作”) 按照功能测试实现 接口测试信息
用例优先级(选择) @pytest.mark.p1 Tags 执行的时候需要使用 -m=“标签名称”
预期结果 assert 实际结果 == 预期结果 直接体现 断言 断言
实际结果

演示环境

尝试调用get请求

https://httpbin.ceshiren.com/

测试登录接口

https://litemall.hogwarts.ceshiren.com/