首页 > 其他分享 >2.接口自动化测试

2.接口自动化测试

时间:2024-09-06 14:37:37浏览次数:11  
标签:git 代码 xxx 接口 allure 测试 自动化 test 分支

接口自动化测试

基于pytest和allure构建接口自动化测试框架构与项目。

框架目录结构

我们要构建一个自动化测试框架,就要以项目的概念来对项目中所有的代码文件进行划分目录和文件结构,不同的代码功能不一样,所以我们需要设计一个合理的目录结构,以方便与测试开发团队的其他人员进行测试功能的开发与测试,也方便将来的项目代码维护。

根目录/
 ├─ config.py    # 项目代码配置文件
 ├─ pytest.ini    # pytest模块配置文件
 ├─ main.py      # 主程序,执行入口
 ├─ api/         # 封装被测试项目的api接口存放目录[用于mock测试、冒烟测试]
 ├─ data/        # 测试数据/测试用例的存放目录
 ├─ results/     # 测试报告结果生成目录
 ├─ reports/     # HTML测试报告生成目录
 ├─ tests/       # 测试用例脚本存放目录
 ├─ libs/         # 第三方工具类的存放目录[开源模块,不是当前项目封装的模块]
 └─ utils/        # 自定义工具类的存放目录[当前项目自己封装的模块]

配置文件,config.py,代码:

import pathlib  # 路径操作模块,替代 os.path模块,os.path采用字符串来操作路径,pathlib采用面向对象来操作路径

# 项目目录的主目录路径[字符串路徑]
BASE_DIR_STR = pathlib.Path(__file__).parent.resolve().as_posix()  # 基本操作系统转换路径的分隔符 as_posix
# 項目目录的主目录路径[路径对象]
BASE_DIR = pathlib.Path(BASE_DIR_STR)

# 项目名
WEB_NAME = "路飞自动化接口测试框架"

# 测试自动化项目的运行端口与IP地址
HOST = "127.0.0.1"
PORT = 8088

入口文件,main.py,代码:

import pytest
import os
import sys

import config

if __name__ == '__main__':
    os.system(f"rd /s /q results")
    os.system(f"rd /s /q reports")

    # 让python解释器,追加3个项目中的核心目录为导包路径
    sys.path.insert(0, str(config.BASE_DIR / "api"))
    sys.path.insert(0, str(config.BASE_DIR / "tests"))
    sys.path.insert(0, str(config.BASE_DIR / "utils"))

    # 启动pytest框架
    pytest.main()

    # 生成报告html文件
    os.system('allure generate ./results -o ./reports')

    # 基于http协议打开HTML测试报告
    os.system(f'allure open ./reports -h {config.HOST} -p {config.PORT}')

在根目录下创建pytest配置文件pytest.ini,内容如下:

[pytest]
addopts =-s -v --alluredir=./results
testpaths = ./
python_files = test_*.py
python_classes = Test*
python_functions = test_*

OK,完成了上面操作以后,我们就可以写一个测试用例来测试下现在我们的基本框架是否能正常运行了。

tests/users/test_login.py,代码:

import allure
import config


@allure.epic(config.WEB_NAME)
@allure.feature("用户模块")
@allure.story("登录")
class TestLogin(object):
    @allure.severity(allure.severity_level.CRITICAL)
    def test_username_by_empty(self,):
        allure.dynamic.title("用户名为空,登陆失败")
        allure.dynamic.description("测试用户名为空的登陆结果")
        allure.attach('附件内容', '附件名字')

    def test_password_by_empty(self,):
        allure.dynamic.title("密码为空,登陆失败")
        allure.dynamic.description("测试密码为空的登陆结果")
        allure.attach('附件内容', '附件名字')

运行框架,效果:

 

当然自动化接口框架的构建开发过程肯定不是一夜之间就能完成的,所以我们需要长期构建,不断完善的准备。所以需要使用git代码版本管理工具把代码推送到git仓库中进行代码版本的管理(在企业中一般我们会使用公司内部构建的gitlab平台来管理内部项目,但现在我们处于学习阶段,所以可以先把代码提交到gitee码云上)。

代码托管

注意:公司内部的代码不要私自自己往gitee(码云),github去推。

gitee官网地址:https://gitee.com/

准备工作

需要提前在当前开发机子上安装git代码版本管理工具。

windows下载地址:https://git-scm.com/

创建仓库

 

我们是学习,所以我这创建项目库名luffytest。项目库名建议是英文的。

选择git-flow自定义分支模型。

所谓的分支,其实就是一个项目的代码的不同流程版本。

git-flow分支命名规范:

分支前缀描述
master 生产环境分支,将来可以部署到生产环境(公司的外网服务器)的代码
release 预发布环境分支,将来可以部署到预发布环境的代码,也可以是rel
develop 开发环境分支,也可以是dev
feature 新功能,新增业务分支,也可以是feat
hotfix 修复bug问题、漏洞分支,也可以是fix
test 测试相关分支

补充说明:

release/feature/xxx   # 表示待发布分支下的xxx业务功能相关代码
develop/feature/xxx   # 表示开发分支下的xxx业务的新功能代码
develop/test/xxx      # 表示开发分支下的正在测试的xxx业务功能的代码
develop/hotfix/xxx    # 表示开发分支下的修复xxx业务相关功能的bug

# 当然,分支名称并不是固定的,只要能让开发人员一目了然,名字都可以换,所以也可以这样:
release/xxx   # 表示待发布的xxx业务新功能代码
feature/xxx   # 表示正在开发的xxx业务功能代码
test/xxx      # 表示正在测试的xxx业务功能代码
hotfix/user   # 表示正在修复bug的xxx业务功能的代码

创建私有空仓库以后的界面:

免密提交代码

接下来,我们可以使用ssh连接远程的git仓库,需要先在本地电脑下生成ssh秘钥对。

# 例如我的码云账号是 [email protected],那么该账号生成ssh秘钥对(基于rsa加密算法生成的秘钥对,公钥和私钥)
ssh-keygen -t rsa -C "[email protected]"

复制终端下出现的公钥信息,复制到码云上面。

# 查看生成的秘钥对中的公钥(私钥id_rsa保存在自己电脑不要乱动,公钥id_rsa.pub需要复制文件内容到码云平台)
cat C:\Users\Administrator/.ssh/id_rsa.pub
# 把公钥进行复制到码云平台上 https://gitee.com/profile/sshkeys

在浏览器打开https://gitee.com/profile/sshkeys,保存公钥。

切换项目的仓库地址,设置线上仓库

git config --global user.name "mooluo"
git config --global user.email "[email protected]"

# 在项目根目录下初始化git仓库
cd luffytest/  # 具体的路径根据自己的设置而定
git init

# git remote remove origin # 删除仓库地址,origin可以理解是一个变量,因为当前时一个新仓库,所以不需要执行这段。
git remote add origin [email protected]:mooluo_admin/luffytest.git # 新仓库地址,等同于origin= git..../luffycity.git

分支管理,git提交代码版本并同步到远程服务器。

git branch    # 查看分支
# 刚执行git init 初始化时,会没有分支,因此我们需要进行第一次的代码提交。

git add .
git commit -m "feature: 项目初始化"
# 经过上面的命令操作,本地的git就会自动生成一个master分支

# git branch <分支名称>    # 新建分支
# git branch test         # 例如:创建一个test分支

# git checkout <分支名称>  # 切换分支
# git checkout test       # 例如:切换到test分支,检出分支代码

# git branch -d <分支名称>   # 删除分支
# git branch -d test

# git push <远程仓库别名> --delete <分支名称>    # 删除远程服务器分支
# git push origin --delete test  # 例如:删除远程仓库origin中的test

# 推送代码记录到远程服务器的代码仓库
git push origin master # 推送的过程中,如果本地有该分支,但是线上没有这个分支,则git会自动在远程中创建该分支,默认的空仓库是一个分支都没有的。

使用.gitignore可以在git上传或下载代码时,把一些不必要记录的垃圾文件/目录过滤掉。

注意:必须保证.git目录 和.gitignore在同一级目录下,才能生效。

.gitignore编写参考地址:https://github.com/github/gitignore

.gitignore文件内容:

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

 

 

标签:git,代码,xxx,接口,allure,测试,自动化,test,分支
From: https://www.cnblogs.com/Haier123/p/18400171

相关文章

  • 例2.12 分别编写求n!和输出斐波那契数列的函数,并用两个函数进行测试
    例2.12分别编写求n!和输出斐波那契数列的函数,并用两个函数进行测试2.12.1deffactorial(n):r=1whilen>1:r*=nn-=1returnrdeffib(n):a,b=1,1whilea<n:print(a,end="")a,b=b,a+bprint('%d!=%d'%(......
  • 有关API接口的介绍及简单的API接口代码示例
    在当今数字化时代,应用程序不再孤立存在。它们通过API(应用程序编程接口)相互连接,共享数据和功能。API是现代软件开发中不可或缺的一部分,它允许不同的软件系统相互通信,实现数据的交换和业务逻辑的集成。一、API接口的基本概念API接口是一种预定义的函数或协议,它允许不同的软件应用......
  • 淘宝 API 接口使用的技术要点与注意事项
    在当今数字化的商业环境中,淘宝API接口为开发者提供了强大的工具,允许他们与淘宝平台进行交互,获取商品信息、处理交易等。然而,正确使用这些接口需要遵循一定的技术规范和注意事项,以确保程序的稳定性、安全性和高效性。以下是一些关键的技术要点和注意事项。一、注册与认证在......
  • 测试基础、单元测试自动化
    基本概念自动化测试,也叫软件测试自动化。要学习软件测试自动化,首先就需要清楚什么是软件测试。软件测试因为当局者迷,旁观者清的道理,软件开发是个复杂而周期性的过程,期间很容易产生或遗留下错误,而对于开发人员自己所编写与开发的应用程序(软件),往往有很多问题是他们自己发现不了,所......
  • 【运维自动化-配置平台】平台管理功能如何使用
    BlueKing智云配置平台,以下简称配置平台配置平台里的平台管理功能是管理员的一些操作,比如一些全局纬度的设置1、全局配置-业务通用业务快照名称:通常不需要修改,保持平台搭建好默认业务(BlueKing)即可拓扑最大可见层级:可根据实际业务场景自定义调整,需要注意的是,这个是全局的调整,针......
  • 【运维自动化-配置平台】模型及模型关联最小化实践
    蓝鲸智云配置平台,以下简称配置平台我们知道主机是配置平台最常见的管控资源对象,在业务拓扑里可以通过划分模块来清晰的可视化管理;那其他资源如何通过配置平台来纳管呢,比如网络设备交换机。场景需求:如何把交换机和主机的关联关系在配置平台进行可视化的纳管一.不友好的方式通......
  • 基于PDF资料编写PRD长文档测试案例
    基于PDF资料编写PRD长文档测试案例测试提示语您是产品专家,请基于如下内容,编写详细PRD文档,需要需求规则描述,输入与输出,非功能性需求http://www.phic.org.cn/zcyjybzpj/bzypj/bzgf/bjsgfwj/201804/P020181122342212839943.pdfhttps://www.chima.org.cn/Sites/Uploaded/File/2020/0......
  • Node.js视频活体识别接口集成示例
    在数字时代的浪潮中,信息安全成为了一个不可忽视的议题。随着网络服务的日益普及,从银行金融到社交媒体,各种在线平台都需要确保其用户的身份真实可靠。在需求的推动下,视频活体识别技术应运而生,并迅速发展成为保护网络安全的重要手段。视频活体识别技术是一种通过分析用户的......
  • jdk8调用第三方接口出现握手失败(Received fatal alert: handshake_failure)
    3、记一次错误1、问题出现的场景​1、通过java代码调用第三方接口,出现这个ssl认证,握手失败。我的jdk版本是1.8_131版本出现的错误提示:javax.net.ssl.SSLHandshakeException:Receivedfatalalert:handshake_failure​ 2、我通过curl命令在服务器上调用是可以......
  • 如何确保渗透测试过程中不违反法律法规?
    确保渗透测试过程中不违反法律法规,需要遵循以下几个关键步骤:获取授权:在进行渗透测试之前,必须获得系统所有者的明确授权。这通常需要通过签订合同或授权书来实现,其中应详细说明测试的范围、方法、时间以及双方的责任和权利。这是确保测试合法性的基础,也是保护渗透测试者自身不......