自学Python+Selenium自动化测试


        毛泽东说:“我一生最大的爱好是读书”,“饭可以一日不吃,觉可以一日不睡,书不可以一日不读”。

---毛泽东的读书学习生涯(上)

        学习是文明传承之途、人生成长之梯、政党巩固之基、国家兴盛之要。

---谈论学习也不行?


        退伍回来10个多月,奈何没有相关的软件测试工作经验和经历,而且毕业四五年没碰过了软件专业了,加之现在疫情的变化无常,报培训班时间不够自由,所以回来边恶补专业知识,边找相关工作。只能是四处碰壁,让我学习的欲望更加强烈。

        今天也恰巧看到CSDN话题挑战赛第2期中的《学习笔记》这个参赛话题很符合我,正好把我近期学习的(四)自动化测试-unittest框架简单总结一下,方便自己以后找出来看看。


CSDN话题挑战赛第2期

参赛话题:学习笔记


目    录

        一、前期脚本问题

        二、融入unittest框架

        1、unittest框架好处

        2、unittest框架工作原理

        三、unittest框架拆分介绍

        1、导入unittest包

        2、创建测试用例类

        3、测试用例类中的五种特殊方法(包含使用场景及执行顺序)

        4、创建测试用例

        5、测试用例执行

        6、断言

         7、python代码和运行结果

        四、脚本优化

        1、测试用例主执行文件

        2、测试结果优化

        3、测试报告输出---SMTP(未完结)

        五、项目结构(未完结)

        1、public

        2、test_cases

        3、test_datas

        4、test_reports

        5、test.py

        6、attachments

        7、confs


        一、前期脚本问题

        1、测试用例过多,只能单一执行,或者导包执行。

        2、断言方式简单且不实用,日志只能体现在控制台输出,无法体现在报告中。

        3、无法体现测试报告中的效果:测试用例数量、执行数量、通过数量、失败数量以及失败原因。


        二、融入unittest框架

        不仅仅是代码级别的功能测试、逻辑覆盖

        1、unittest框架好处

        (1)提供用例组织与执行

        (2)提供丰富的断言方法

        (3)提供丰富的日志和报告(HTML格式更直观展示)

        2、unittest框架工作原理

        (1)Fixture(固定件)

        TestCase:测试用例、脚本

        TestSuite:测试集合、套件、文件夹、统一管理多条测试用例

        TestRunner:测试运行器

        TestLoader:测试用例加载器

        TestRusult:测试结果、字典类型

        (2)单元测试代码段

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:bigbear
# datetime:2022/9/3 16:39
# software: PyCharm

"""
    单元测试:
        测试对象:类中的方法(函数)
"""


class MyMath:
    """定义运算函数:实现加减乘除算法"""

    @staticmethod
    def add(a, b):
        """加法"""
        # 测试问题:若a是字符串,b是整型,应该是字符串拼接运算
        if isinstance(a, str) and isinstance(b, int):
            b = str(b)
            return a + b
        else:
            return a + b

    @staticmethod
    def subtract(a, b):
        """减法"""
        return a - b

    @staticmethod
    def multiply(a, b):
        """乘法"""
        return a * b

    @staticmethod
    def divide(a, b):
        """除法"""
        if b == 0:
            return "除数不能是0,小学生都知道的啊"
        else:
            return a / b


if __name__ == '__main__':
    """单元测试-代码功能验证"""
    mm = MyMath()
    # 实现第一条加法测试用例
    actual_value = mm.add(1, 1)
    expect_value = 2
    if actual_value == expect_value:
        print("加法功能实现正确")

    # 实现第二条加法测试用例:can only concatenate str (not "int") to str
    try:
        actual_value = mm.add("a", 1)
        expect_value = "无法运算"
        if actual_value == expect_value:
            print("加法功能实现正确")
    except Exception as e:
        print(f"加法功能实现正确:{e}")

    # 实现第三条加法测试用例
    try:
        actual_value = mm.add("a", "b")
        expect_value = "ab"
        if actual_value == expect_value:
            print("加法功能实现正确")
    except Exception as e:
        print(f"加法功能实现正确:{e}")

        三、unittest框架拆分介绍

        1、导入unittest包

import unittest

        2、创建测试用例类

        继承单元测试框架的单元测试用例的类unittest.TestCase

class MyMathUnittest(unittest.TestCase):
    """继承单元测试框架的单元测试用例类"""

        3、测试用例类中的五种特殊方法(包含使用场景及执行顺序)

        setUp()、test_xxx()、tearDown()执行顺序与位置无关,且每执行一条测试用例,setUp()和tearDown()都会执行一次(无论该测试用例是否通过)。

        @classmethod注解的方法是类方法,不用创建对象也可以用的方法,在对象进入内存之前就已经存在的方法,随着类一起进内存。

        (1)setUp()  # 初始化、环境搭建

        (2)test_xxx()  # 测试用例方法、步骤

        (3)tearDown()  # 还原测试用例环境

        (4)@classmethod-setUpClass()  # 对当前测试用例类的所有测试用例进行初始化,只在类执行开始执行一次

        (5)@classmethod-tearDownClass()  # 对当前测试用例类的所有测试用例资源进行释放,只在类执行结束执行一次

import unittest

# from importlib import import_module
from my

你可能感兴趣的:(#,web自动化测试,python,selenium,自动化,单元测试,测试用例)