0628-web自动化&pytest测试框架

Selenium

官网地址: https://www.selenium.dev/

环境准备

浏览器IDE插件(Chrome谷歌浏览器)

插件文件:
Chrome-IDE-3.17.1.crx.zip (3.9 MB)

Chrome-IDE-3.16.0.crx.zip (3.9 MB)

pip镜像源地址: https://pypi.tuna.tsinghua.edu.cn/simple

使用方法:

pip install <第三方库名称> -i https://pypi.tuna.tsinghua.edu.cn/simple

配置pytest

练习pytest用法

class Calculator:
    def add(self, a, b):

        if a > 99 or a < -99 or b > 99 or b < -99:
            print("请输入范围为【-99, 99】的整数或浮点数")
            return "参数大小超出范围"

        return a + b

    def div(self, a, b):
        if a > 99 or a < -99 or b > 99 or b < -99:
            print("请输入范围为【-99, 99】的整数或浮点数")
            return "参数大小超出范围"

        return a / b

编写加法、除法的测试方法

from calculator import Calculator
class TestCalculator:
    def test_add(self):
        num1 = 100
        num2 = 76
        cal = Calculator()
        res = cal.add(num1, num2)
        assert res == 176

pytest 命令行指定用例执行方式

  1. 运行当前目录下所有符合收集规则的用例:执行 pytest
  2. 运行当前目录下 某个测试文件 执行: pytest xxx.py
  3. 运行当前目录下 某个测试类 执行: pytest xxx.py::类名
  4. 运行当前目录下 某个测试用例 执行: pytest xxx.py::类名::方法名

展示用例执行过程 加 -vs 参数
pytest -vs 文件名

标记测试用例 -m

练习

  • 对学员信息管理系统的功能完成单元测试
    • 增加
    • 删除
    • 获取
    • 求平均数
# student.py
class Student:
    def __init__(self,name,score):
        self.name = name
        self.score = score

    def __str__(self):
        return f"学生的姓名:{self.name}, 分数:{self.score}"

# student_manager.py
class StudentManager:
    def __init__(self):
        self.students:List[Student] = []

    def add(self,student:Student):
        '''添加学员'''
        self.students.append(student)

    def remove(self,name:str):
        ''' 移除学员 '''

        for student in self.students:
            if student.name == name:
                self.students.remove(student)

    def get_student_info(self,name:str):
        for stu in self.students:
            if stu.name == name:
                return stu

        raise Exception(f"Student <{name}> not found. ")

    def average_score(self)->float:
        sum = 0
        for s in self.students:
            sum += s.score
        stu_num = len(self.students)
        print(f"学生的总分数:{sum}, 学生总人数:{stu_num}")
        return sum/stu_num

    def show_students(self):
        for stu in self.students:
            print(f"显示学员相关信息:{stu}")