欢迎光临散文网 会员登陆 & 注册

第十章 自动化测试 Pytest+Jenkins

2023-07-04 09:33 作者:littersho  | 我要投稿

之前unittest框架

pytest是 python的一种单元测试框架

+数据库(关系型数据库MySQL,非关系型数据库redis)

需要用到 requests(请求),yml(pyyaml读取测试用例data.yaml的一个包),allure(测试报告),log(记录运行日志),pyMySQL(数据库)插件

跟Jenkins打通,发送到钉钉或企业微信

一,环境搭建

①python安装

python官网 -- 点击Download-Windows -- 下载3.7.6版本 x86-64 -- 双击安装包

-- 需要勾选 add python 3.7 to path

cmd--控制台--输入python 回车--显示python3.7.6就表示安装成功了

可以尝试测试下: print(“pytest。。。”)回车  --  显示运行结果 pytest。。。

②编辑器pycharm安装

选择other versions(因为最新版本没办法破解)--  找到2021-01-13号版本 -- 双击安装成功即可 --打开时点击试用(30天试用期)

二,接口测试

(1)HTTP是一个协议(服务器传输超文本到浏览器的传送协议)

是基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)

(2)具体工作流程:eg,访问www.baidu.com

① DNS先进行域名的解析 将域名地址转化为IP地址 Remote Address

②发起TCP请求,三次握手建立连接

③客户端 发送HTTP请求到服务端

④服务器端处理请求,返回HTTP报文

⑤浏览器接收返回HTTP报文,进行渲染展示

⑥ 断开连接 进行四次挥手

(3)HTTP资源

空白--右键--检查 进行查看


三,pytest详细介绍

首先建一个新的项目

①打开 pycharm  +new project

②Location 选择项目文件地址  再+一层 ApiTest

    Base interpret 选择python安装目录   点击create

main.py  简单的测试代码,点击三角符号,可运行,说明服务器创建成功了

③选中 ApiTest文件夹 -- 右键 --new --python file  eg:test_get

(1)python requests安装

在刚新建的test_get.py文件中

import requests  #引入包,请求接口

# 如果爆红

①可以把鼠标点上去,会弹出提示-- install package requests --点击之后就会安装 

②最下方一行找到terminal(终端的意思)--输入:pip3 /pip install requests

③最下方一行找到python packages,搜索requests,安装就行了


(2)python requests使用

输入requests.  自动会弹出提示,可以选择想用的方法

# requests.post

# requests.get

鼠标左键+CTRL  可以跳进去查看源码

def get(url,params=none,**kwargs)#函数定义,参数:url必传,params选传,不传时默认为none,关键字参数,传的话以key,value形式

def post(url,data=none,json=none,**kwargs)#函数定义,参数:url必传,params选传,不传时默认为none,关键字参数,传的话以key,value形式

简单的使用例子:

import requests 

r = requests.get("https://www.baidu.com") # 用r来接收接口请求的结果 r={response}

print (r.status_code)  

print (r.json())  #  r. 会提示response中的返回值内容

可以点击代码前的位置,打上断点

右键--debug 查看

点击三角符号继续运行

简单的使用例子(带params参数):

选中 ApiTest文件夹 -- 右键 --new --python file  eg:test_get_params

import requests 

params1={“number”:“13167894587”,“appkey”:“0c565f14687d84”}# python中字典数据类型,先定义参数

r = requests.get(url="https://www.baidu.com",params=params1)

print (r.status_code)  

print (r.json())  

或者直接输入参数

import requests 

r = requests.get(url="https://www.baidu.com",params={“number”:“13167894587”,“appkey”:“0c565f14687d84”}) 

简单的使用例子(post带json参数):

选中 ApiTest文件夹 -- 右键 --new --python file  eg:test_post_params

import requests 

json_data={"title"="food",“number”:“13167894587”,“appkey”:“0c565f14687d84”}# python中字典数据类型,先定义参数

r = requests.post(url="https://www.baidu.com",json=json_data)# 看接口body中传参是data还是json,就用相应的参数

print (r.status_code)  

print (r.json()) 

(3)requests请求中加入请求头(多个接口会用到,拎出来避免冗余)

反爬程序,会出现418

Headers:Cookie,User-agent

简单的使用例子:

import requests 

r = requests.post(url="https://www.baidu.com",headers={"user-Agent":"Mozilla/5.0..."})#接口中的**kwargs关键字参数,可选参数

print (r.status_code)  

print (r.json()) 

四,代码封装

(1)pip install pytest #先安装pytest第三方包

新建一个 python file:注意:文件命名规范:以test_开头,如果不规范不会去执行

def test_one():

      expect=1

      actual=1

      assert expect == actual  #关键字assert 用于捕获错误并提示用户定义的错误消息

# assert关键字也称断言函数。 常用于在程序运行时检测某条件是否满足,如果不满足则会报错。

每条测试用例都要def一个 test_xx方法

(2)**程序运行方式:

①命令行运行

最下方一行找到terminal(终端的意思)--输入:pytest test_one(测试用例文件名)

test+tab键,会展示相关文件名

运行结果:绿色点 成功  红色F 失败

②三角形图标运行(可分别运行测试用例)

执行方式:tools-- python inter grated tools --testing -- default test runner:pytest

或者直接搜索pytest,可以定位到python inter grated tools 

(3)常用断言方式:

         等于: ==     不等于:!=    大于:>   小于:<        属于:in  不属于:not in 

         大于等于: > =              小于等于: < =       是:is   不是:is not

(4)          CTRL+ALT 代码格式化       tab键缩行   

(5)        python requests使用改进

import requests 

def test-baidu():

r = requests.get("https://www.baidu.com") 

print (r.status_code)  

assert   r.status_code ==200

r2 = r.json() #JSON结果为:{‘status’:0,‘msg’:‘ok’,‘result’:{‘shouji’:‘13157489874’,‘city’:‘杭州’,‘company’:‘中国移动’}}

assert r2【‘status’】==0

assert r2【‘msg’】==‘ok’

assert r2【‘result’】【‘shouji’】==‘13167118005’

assert r2【‘result’】【‘city’】==‘ok’



第十章 自动化测试 Pytest+Jenkins的评论 (共 条)

分享到微博请遵守国家法律