Skip to main content

xiaobaiauto2是对自动化框架的第三次更新,功能覆盖UI自动化与API自动化意在帮助对自动化有更多需求且过多时间写代码的人群,让大家的时间花在业务的实现上

Project description

Downloads Downloads Downloads Downloads

简介

xiaobaiauto2是一套自动化框架,功能覆盖UI自动化与API自动化
意在帮助对自动化有更多需求且过多时间写代码的人群,让大家的时间
花在业务的实现上

架构

Image text

开始使用

了解测试用例目录

test
|
|--__init__.py
|
|--WebTest 
|   |
|   |--conftest.py
|   |--test_WebUI.py
|
|--APPTest
|   |
|   |--conftest.py
|   |--test_Xiaobai_APP_Case1.py
|   |--test_Xiaobai_APP_Case2.py
|
|--APITest
|   |
|   |--test_cases.py
|   |--yewua.py

了解关键词

序号 CMD key
1 打开网页 OPENURL
2 点击 CLICK
3 输入 SENDKEY
4 刷新 REFRESH
5 后退 BACK
6 关闭 CLOSE
7 退出 QUIT
8 标签 TAG
9 属性 ATTR
10 URL CURL
11 标题 ITLE
12 内嵌页 FRAME
13 标签页[序号(1开始)] WINDOW
14 JS_确定 ALERT0
15 JS_取消 ALERT1
16 JS_输入框 ALERT2
17 JS_文本 ALERT3
18 停止 WAIT
19 脚本 SCRIPT
20 添加cookie ADDCOOKIE
21 滑屏 SWIPE
22 截屏 DSCREENSHOT
23 元素截图 ESCREENSHOT
24 识别验证码 FINDTEXT
25 坐标 LOCATION
26 网页源码 PAGESOURCE

修改脚本

参考test目录下面的脚本

@pytest.mark.xiaobai_web
def test_Case1(browser):
    web_action(browser, cmd=cmd.打开网页, loc='', data='http://www.baidu.com')
    web_action(browser, cmd=cmd.输入, loc='//*[@id="kw"]', data='小白科技')
    web_action(browser, cmd=cmd.点击, loc='//*[@id="su"]')
    web_action(browser, cmd=cmd.wait, data=3)
    web_action(browser, cmd=cmd.标题, contains_assert='小白')

关键词的使用,看上面示例亦可(xiaobaiauto2>0.1.5.0)

  • 1 导入cmd类

     from xiaobaiauto2.xiaobaiauto2 import cmd
    
  • 2 cmd类调用属性

     cmd.关键词
    

若感觉关键词不足以使用,可以直接使用原生方法,示例如下

browser.find_element(by=By.ID, value='id属性值').click()

代码执行之前,若您需要发送邮件,请将test_first方法中的email的参数值进行自行修改即可

备注
  • 若APP测试需要获取toast信息可以写一个方法添加到自己的项目中,代码样例如下:
    def find_toast(self, message, timeout, poll_frequency):
         new_message = f"//*[@text=\'{message}\']"
         element = WebDriverWait(self.driver, timeout, poll_frequency).until(
             EC.presence_of_element_located((By.XPATH, new_message)))
         return element.text
    

使用

1、命令行运行脚本

pytest --html=report.html --self-contained-html
or
pytest --html=report.html --self-contained-html -m xiaobai_web
or
pytest --html=report.html --self-contained-html -o log_cli=true -o log_cli_level=INFO

2、定时任务界面运行脚本(CMD命令)

xiaobaiauto2Timer

Image text

3.1、xiaobaiauto2Api将raw数据转换成python代码(版本>0.1.3.1可用)

xiaobaiauto2Api -h    # 帮助文档提示
xiaobaiauto2Api -f *.txt -s *.py
xiaobaiauto2Api -f *.txt -x 2
xiaobaiauto2Api -f *.saz -x 2
xiaobaiauto2Api -f *.har -x 2
xiaobaiauto2Api -f *.har -x 3
xiaobaiauto2Api -d D:\example

3.2、xiaobaiauto2 >= 0.1.4.5 支持c参数

xiaobaiauto2Api -c 1 -f 1.har,2.har
xiaobaiauto2Api -c 1 -f 1.har,2.har -d E:\example
xiaobaiauto2Api -c 1 -f 1.har,2.har -d E:\example -s 1_2_compare
xiaobaiauto2Api -c 1 -f 1.har.2.har -d E:\example -x 3   # 生成*.jmx(含提取器、参数化)[>=0.1.7.2]

3.3、xiaobaiauto2 >= 0.1.5.5 支持t参数

xiaobaiauto2Api -t api        // 生成api测试模板
xiaobaiauto2Api -t web        // 生成web测试模板
xiaobaiauto2Api -t app        // 生成app测试模板

3.4、xiaobaiauto2 >= 0.1.6.3 支持i与v参数(请看3.6) 不指定版本默认安装最新版哦

xiaobaiauto2Api -i jdk -v 8                     // 安装jdk8
xiaobaiauto2Api -i jmeter -v 5.3                // 安装jmeter5.3
xiaobaiauto2Api -i chromedriver -v 88           // 安装chromedriver的88版本
xiaobaiauto2Api -i allure -d "D:\Program Files" // 安装allure(会有些慢哦)

3.5、xiaobaiauto2 >= 0.1.6.5 支持mock模拟接口

from xiaobaiauto2.xiaobaiauto2 import mock, MockServer

@mock(uri='/login', response={"errcode": 200, "msg": "登录成功", "data": {"token": "123456"}})
@mock(uri='/register', response={"errcode": 200, "msg": "注册成功", "data": {}})
@MockServer(uri='/index', response={"errcode": 200, "msg": "首页成功", "data": {}})
def run(): pass

if __name__ == '__main__':
    run(port=7777)
  • 导入mock方法

    from xiaobaiauto2.xiaobaiauto2 import mock, MockServer
    
  • 定义mock接口,mock与MockServer无区别,uri为接口路径,response为接口返回值,run为被装饰的函数名称可自定义

    @mock(uri='/login', response={"errcode": 200, "msg": "登录成功", "data": {"token": "123456"}})
    @mock(uri='/register', response={"errcode": 200, "msg": "注册成功", "data": {}})
    @MockServer(uri='/index', response={"errcode": 200, "msg": "首页成功", "data": {}})
    def run(): pass
    
  • 启动mock接口服务, run为上面被装饰的方法名,port为监听的端口(默认6666)

    if __name__ == '__main__':
        run(port=7777)
    
  • jmeter尝试?

    api1: http://127.0.0.1:7777/login
    api2: http://127.0.0.1:7777/register
    api3: http://127.0.0.1:7777/index
    

3.6、xiaobaiauto2 >= 0.1.6.6 支持软件自动安装与环境配置

  • 默认环境为用户环境,配置的是用户环境变量,若要配置系统环境变量,请使用管理员运行即可
    xiaobaiauto2Api -i jdk -v 8 -d D:\
    xiaobaiauto2Api -i jmeter -v 5.3 -d D:\
    xiaobaiauto2Api -i chromedriver -v 88
    xiaobaiauto2Api -i jenkins -d D:\tomcat\webapps
    xiaobaiauto2Api -i git
    xiaobaiauto2Api -i node -v 15 -d D:\
    

3.7、xiaobaiauto2 >= 0.1.8.3 支持软件自动安装与环境配置

  • 管理系统代理服务器(查看、设置、关闭、验证)
    xiaobaiauto2Proxy -h                        # 查看帮助文档
    xiaobaiauto2Proxy                           # 查看系统代理是否开启
    xiaobaiauto2Proxy -e 0 -p 127.0.0.1:8080    # 开启系统代理
    xiaobaiauto2Proxy -e 1                      # 关闭系统代理
    xiaobaiauto2Proxy -c 1                      # 验证系统代理是否可用
    

3.8、xiaobaiauto2 >= 0.2 支持adb命令,提前打开APP

  • 单设备监控APP的点击,点击的路径自动生成XPath表达式
    xiaobaiauto2App
    
  • 多设备单机监控APP的点击,点击的路径自动生成XPath表达式
    xiaobaiauto2App -d 127.0.0.1:62001    // 指定设备号进行监控
    xiaobaiauto2App -i 1                  // 指定序号为1的设备进行监控
    

3.9、xiaobaiauto2>=0.2.6 支持验证码自动化识别并填充

from xiaobaiauto2.xiaobaiauto2 import verify_check

...
# 验证码图片元素定位
image_element = browser.find_element(by=By.XPATH, value='xpath表达式')
# 验证码输入框元素定位
input_element = browser.find_element(by=By.XPATH, value='xpath表达式')
verify_check(image_element, input_element)

4.0、xiaobaiauto2>=0.2.9 支持Browser、Fiddler、Charles导出cURL转为requests代码

启动xiaobaiauto2Copy服务: xiaobaiauto2Copy

  • Browser
F12->network->requst->copy->copy cURL(bash)
  • Fiddler(不推荐,会缺少请求数据)
File->Export Session->Selected Session->cURL Script
  • Charles
request->Copy cURL Request

4.1、xiaobaiauto2>=0.3.7 支持简化版的Email发送,方便自动化发送邮箱

  • 样例1(执行完用例文件之后,再执行本脚本,即可完成测试报告的及时发送)
from xiaobaiauto2.utils.xiaobaiauto2Email import xemail

# 建立连接,password为授权码不是登录密码
x = xemail(smtp_server='smtp.163.com', smtp_port=25, username='xxx@163.com', password='授权码')
# 发送邮件,to收件人可以多人,files附件可以多个文件,均使用','逗号分割
x.send(to='1@163.com,2@163.com,3@163.com', subject='自动化测试报告标题', content='报告内容', files='report.html')
  • 样例2(因为发送邮件被封到teardown_module函数中,所以发送的是上一次执行的结果)
# filename: test_xiaobai_testcase.py
import pytest
from xiaobaiauto2.utils.xiaobaiauto2Email import xemail

def test_other():
  ''' 其它测试用例代码 '''

def teardown_module():
# 此处发送的报告是上次测试的结果
# 建立连接,password为授权码不是登录密码
x = xemail(smtp_server='smtp.163.com', smtp_port=25, username='xxx@163.com', password='授权码')
# 发送邮件,to收件人可以多人,files附件可以多个文件,均使用','逗号分割
x.send(to='1@163.com,2@163.com,3@163.com', subject='自动化测试报告标题', content='报告内容', files='report.html')

其他帮助

更新日志

版本 功能
0.0.1 添加邮件发送,用例排序,chrome提示框禁止等等
0.1.0.1 添加自动执行任务功能及UI界面
0.1.1 fix缺陷,cmd执行xiaobaiauto2Timer
0.1.2 fix缺陷
0.1.3 新增验证码识别,支持 *.png *.jpg *.jpeg ,新增部分关键词(暂已关闭)
0.1.3.1 fix缺陷
0.1.4.0 新增xiaobaiauto2Api命令行工具,可以将raw请求数据转换成python代码
0.1.4.1 fix缺陷
0.1.4.2 优化与新增Fiddler的saz文件支持
0.1.4.3 优化代码
0.1.4.4 优化与新增charles的har文件支持,支持批量脚本转换
0.1.4.5 优化与新增比较两个har文件并转为Python代码
0.1.4.6 fix并支持fiddler导出的har文件转为Python代码
0.1.5.0 fix并优化api_action
0.1.5.1 优化xiaobaiauto2Api与web_action支持cmd调用关键词
0.1.5.2 新增apiTestCase装饰器
0.1.5.3 修复xiaobaiauto2Api部分bug
0.1.5.4 fix
0.1.5.5 add 选项-t template 参考xiaobaiauto2Api -h
0.1.5.6 fix
0.1.5.7 fix
0.1.6.0 add 参数化符{变量}系统自动识别并替换为预设值
0.1.6.1 fix
0.1.6.2 fix
0.1.6.3 add -i, -v 新增命令行安装软件支持mac系统
0.1.6.4 fix
0.1.6.5 add mock模拟接口
0.1.6.6 优化 -i -v 支持jdk jmeter chromdriver jenkins git node
0.1.7.0 fix
0.1.7.1 fix -i 新增支持allure与svn
0.1.7.2 fix -x 新增支持转为jmeter(*.jmx)脚本
0.1.7.3 fix
0.1.7.5 fix
0.1.7.6 优化jmx数据格式
0.1.7.7 优化
0.1.8.0 优化jmx数据格式
0.1.8.1 优化jmx的参数化实现
0.1.8.2 优化jmx的实现
0.1.8.3 新增xiaobaiauto2Proxy系统代理管理模块
0.1.8.5 优化jmx的实现
0.1.8.6 优化jmx的实现
0.1.8.7 优化jmx的实现
0.1.8.8 优化xiaobaiauto2App
0.1.9 优化xiaobaiauto2App
0.1.9.1 优化mac的环境变量设置
0.1.9.2 fix
0.1.9.3 fix
0.1.9.5 fix
0.1.9.6 新增xiaobaiauto2安装软件tomcat
0.1.9.7 fix
0.1.9.8 fix 支持下载fiddler与postman
0.1.9.9 fix 模板的下载路径报错问题
0.2 xiaobaiauto2App
0.2.1 更新
0.2.2 fixed
0.2.3 fix关键词与xiaobaiauto2App的BUG
0.2.5 优化xiaobaiauto2App输出代码结构
0.2.7 新增验证码识别verify_check,库存在兼容问题,自行安装依赖!
0.2.8 新增浏览器copy->cURL(bash转requests代码)
0.2.9 新增Fiddler/Charles->cURL(bash转requests代码)
0.3 优化代码,修复BUG
0.3.1 优化代码,修复BUG
0.3.2 优化代码
0.3.3 优化代码
0.3.5 Fix BUG
0.3.6 优化xiaobaiauto2Email新增简化版邮件发送
0.3.7 优化xiaobaiauto2Email
0.5 优化软件安装,window默认系统环境变量设置且立即生效
0.5.1 Fix BUG

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xiaobaiauto2-0.5.1.tar.gz (2.6 MB view hashes)

Uploaded Source

Built Distribution

xiaobaiauto2-0.5.1-py3-none-any.whl (2.6 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page