pytest自动化测试框架使用讲解,一学就会

背景目的

为了降低部门内测试人员对自动化测试框架的使用难度,提高自动化使用范围,编写了一套容易上手的自动化使用规范与案例,降低整体代码维护性难度。

框架介绍

该框架基于pytest+allure设计,可适用于常规的接口测试、后端服务测试、接口+后端复杂场景的自动化测试,以下是该框架各部分用途与讲解:

common

该目录专门存放常用的模块与工具,目的在于简化testCase脚本的编写难度,提高编写速度,例如:配置工具类、对应系统的加解密工具类、excel工具类、文件工具类、ftp常用操作,数据库常用操作,以及其他常用模块的封装。

log

测试用例中打印的所有日志信息都存储在该目录下,便于执行后查看与调试跟踪。
其他脚本或者用例脚本如果需要进行日志打印,可在文件上方进行日志对象的初始化,然后可在下方的方法、类中进行打印:

import logging

log = logging.getLogger(__name__)

def test_1():
    log.info("hello....")
    
class TestDog(object):
    def eat(self):
        log.info("eat....haha..")

report

自动化用例执行后,allure产生的报告结果存放在该目录下,该目录主要由main.py执行时进行指定,不建议更改到其他目录,例如:

#-*-coding:u8-*-
import pytest
import os
import time

if __name__ == '__main__':
    pytest.main(['--alluredir=./report','--clean-alluredir', "./test_case/test_demo_1.py"])  # 指定测试文件

resource

该目录主要用来存在一些用例中用到的静态文件等,例如:参数Excel、图片、音频等等。在脚本通常使用相对路径进行访问。
若静态资源也存在分类,可在该目录下进行其他分类目录的创建,并自行管理。

test_case


该目录主要用来存放主用例脚本,根据实际的情况,将用例按照模块、不同业务等进行管理,通常采用多个脚本进行区分。
测试用例编写规则如下:

测试文件以test_开头(以_test结尾也可以)
测试类以Test开头,并且不能带有 init 方法
测试函数以test_开头
断言必须使用 assert
并配合pytest、allure提供的注解接口用来添加用例的描述信息、标题、给用例进行标记(方便过滤)、参数化等等,详细可参考google或者本文档后面的参考案例。
关于测试fixture的使用也可以随测试用例一起进行使用

配置文件

在本框架中主要有两个重要的配置文件:config.yml、pytest.ini

config.yml

config.yml为用户自定义的配置文件,根据项目需要进行配置参数设置。
例如服务ip、端口,各类组件配置参数、数据库连接等等。
yml文件必须采用yml规范进行参数维护

pytest.ini

pytest.ini为pytest本身自带的配置文件,主要作用例如:制定用例发现规则、定义标签、配置日志信息、以及其他一些pytest运行时的参数均可以在该配置文件中配置,简化运行复杂度。
注意:pytest.ini文件位置必须为整个工程的根目录下

conftest.py

该文件主要用来做全局用例共享使用,如参数的共享、测试fixture的定义等,一些初始化的操作通常会放到该文件中,该文件名不能改变,在整个工程中可以有多个,但需要在不同的目录层级下,其应用范围也不一样。

World.py

用户定义的全局模块,便于不同用例间全局变量数据的传递等,例如用例参数、配置信息、session,其他全局参数等,使用方法与python中模块中变量的使用方法一致。
注意:导入全局变量时,建议连同模块名字一起带上,如下:

import World

def test_1():
    World.session.get(World.config['microbrain']['url])

main.py

整个工程运行主程序,必须要在工程的根目录下。

环境搭建

python

本框架默认使用python3.X
安装后记得配置PATH环境变量

pycharm

本案例中使用pycharm 2018.3.5版本,实际可使用更高版本

依赖安装

pytest
使用命令安装:pip install pytest
allure
安装如下:

pip install pytest-allure
下载https://repo1.maven.org/maven2/io/qameta/allure/allure-commandline/2.13.6/allure-commandline-2.13.6.zip
解压后并将bin目录配置到PATH环境变量中
yaml
使用命令安装:pip install pyyaml

其他依赖

根据实际需要进行安装,常用库如下:
openpyxl
requests
pymysql

打开工程


从svn仓库中下载完整的框架工程,在pycharm中选择File->Open 选择pycharm工程目录即可打开
注意:对于有多环境的py2、py3,在打开工程后不确定选择是什么版本,使用File->Setting->Project->Project Interpreter 来进行python不同版本环境的选择。

测试执行

执行
直接在工程目录下运行main.py文件即可
或者在命令行下运行main.py文件

查看报告


通常在执行之后本框架只会生成中间的allure结果,需要使用allure命令生成html的web报告,在工程目录下执行命令:
allure generate ./report -o ./report/html
执行完成后,可在report/html目录下生成报告的静态文件,使用浏览器打开即可。
或者使用命令:
allure serve ./report
执行完成后,会直接打开浏览器展示报告内容

在这里插入图片描述

 


案例讲解

单用例场景

参考test_case章节规则描述
直接参考提供的案例即可

参数化场景

本案例中的参数使用excel进行管理,使用步骤如下:

  1. 初始化所需要的参数
  2. 使用parametrize注解进行参数传递

excel中参数如下:

在这里插入图片描述

测试用例中代码如下

case_data = get_excel_case("./resource/test_case.xlsx",{"ld":2})

@pytest.mark.parametrize("p",case_data)
def test_haha(p):
    allure.dynamic.title(p['case_id'])
    log.info(p)

代码讲解:

get_excel_case方法从excel中 “ld” sheet表中第2行开始,将所有数据读取至case_data变量中,变量类型为数组。
test_haha方法会被执行多次,p参数为每次传入的每一行的excel表中的数据。
执行完成后,生成报告截图如下:

在这里插入图片描述

 如果对软件测试有兴趣,想了解更多的测试知识,解决测试问题,以及入门指导,帮你解决测试中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加下方交流群

在这里插入图片描述

 

<think>嗯,用户现在问的是软件测试入门。首先,我需要确定用户的需求是什么。可能他们刚开始接触软件测试,想要了解基础概念、方法或者习路径。之前他们询问过Python爱心代码,可能对编程有定了解,但现在的需求转向软件测试,可能是在习软件开发的过程中想要扩展技能。 接下来,我需要考虑软件测试入门需要涵盖哪些内容。通常,入门者需要知道软件测试的定义、目的、基本流程、常用方法(比如黑盒测试、白盒测试)、测试工具,以及习资源。可能还需要些实际例子或简单的代码示例,这样用户可以将理论应用于实践,就像之前他们提供的爱心代码样。 用户之前的问题涉及Python,所以如果能在软件测试中结合Python的示例可能会更有帮助。比如,使用Python的unittest或pytest框架写测试用例,这样他们可以用熟悉的语言来理解测试概念。同时,用户可能对自动化测试感兴趣,因为之前的爱心代码有定的自动化绘图过程。 另外,用户可能对职业发展或习路径感兴趣,所以需要简要提到软件测试工程师的技能要求和习资源推荐。可能还需要区分手动测试和自动化测试,以及它们各自的应用场景。 需要注意的是,用户是初者,所以解释要清晰,避免使用过多专业术语,或者如果使用的话,需要简单解释。例如,解释什么是单元测试、集成测试,以及它们之间的区别。同时,结构要层次分明,分步骤或分点说明,方便用户逐步理解。 可能还需要回答用户潜在的问题,比如如何开始实践,有哪些工具可以使用,是否需要习特定的编程语言等。结合之前的对话,用户已经会用Python,所以重点介绍Python相关的测试工具和框架会更合适。 最后,确保回答符合之前系统级指令的要求,比如数公式的格式,但在这个问题中可能涉及较少,主要注意代码块的使用,正确展示测试用例的示例代码,并遵循格式要求。同时,结构清晰,分点说明,帮助用户步步建立对软件测试的理解。</think>好的!以下是关于**软件测试入门**的详细指南,从基础概念到习方法逐步讲解--- ### **、什么是软件测试?** **定义**:通过手动或自动化的方式,验证软件是否满足需求、发现缺陷,并评估质量的过程。 **目标**:确保软件的功能正确性、性能、安全性和用户体验。 --- ### **二、软件测试的核心分类** #### 1. **按测试阶段划分** - **单元测试**(Unit Testing): 测试代码的最小单元(如函数、类),常用框架:Python的`unittest`、Java的`JUnit`。 **示例(Python)**: ```python import unittest def add(a, b): return a + b class TestMath(unittest.TestCase): def test_add(self): self.assertEqual(add(2, 3), 5) # 验证2+3=5 if __name__ == '__main__': unittest.main() ``` - **集成测试**(Integration Testing): 验证多个模块协同工作时的正确性。 - **系统测试**(System Testing): 测试完整系统是否符合需求文档。 - **验收测试**(Acceptance Testing): 用户或客户验证软件是否满足业务需求。 #### 2. **按测试方法划分** - **黑盒测试**:不关心内部代码,只验证输入输出(如功能测试)。 - **白盒测试**:基于代码逻辑设计测试用例(如路径覆盖)。 - **灰盒测试**:结合黑盒和白盒的方法。 --- ### **三、基础测试流程** 1. **需求分析**:明确测试范围和目标。 2. **测试计划**:制定策略、资源分配和时间表。 3. **用例设计**:编写测试用例(如等价类划分、边界值分析)。 4. **执行测试**:手动或自动化执行用例。 5. **缺陷管理**:记录并跟踪Bug(工具:JIRA、禅道)。 6. **测试报告**:总结测试结果和覆盖率。 --- ### **四、常用测试工具** | 类型 | 工具举例 | 用途 | |---------------|-------------------------|-----------------------------| | 自动化测试 | Selenium, Appium | Web/APP界面自动化 | | 性能测试 | JMeter, LoadRunner | 模拟高并发压力测试 | | API测试 | Postman, Requests库 | 接口功能验证 | | 持续集成 | Jenkins, GitLab CI | 自动化构建和测试 | --- ### **五、如何高效入门?** 1. **习基础知识**: - 书籍:《软件测试的艺术》《Google软件测试之道》。 - 在线课程(Coursera、B站)。 2. **动手实践**: - 从单元测试开始,尝试为简单代码编写测试用例。 - 用Selenium自动化个网页登录流程。 3. **掌握工具链**: 熟练使用至少种测试框架(如`pytest`)+ 缺陷管理工具。 4. **理解开发流程**: 习敏捷开发(Scrum)和DevOps中的测试角色。 --- ### **六、职业方向参考** - **功能测试工程师**:手动验证需求,设计测试用例。 - **自动化测试工程师**:编写脚本实现测试自动化。 - **性能测试工程师**:优化系统吞吐量和响应时间。 - **测试开发工程师**(SDET):开发测试工具和框架--- **下步建议**: 尝试用`pytest`为你的Python代码编写单元测试,并探索Selenium实现个简单的网页操作自动化! 如果需要更具体的实践示例或工具配置指导,可以随时提问! 🚀
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值