logo
0
0
WeChat Login
向往理想主义的猪<8275958+chinacjn@user.noreply.gitee.com>
优化脚本

0. 前言

1. 项目部署

  • 项目结构

    .\data # 测试数据 .\logs # 日志 .\reports # 报告 .\static # 存放静态文件(测试上传功能所需的文件) .\testcases # 用例 .\utils # 工具 config.ini # 配置文件 run.py # 运行入口
  • 本地调试

    • 环境版本
    工具版本
    Python3.9及以上
    chrome驱动111.2(安装最新即可)
    firefox驱动144.7 (安装最新即可)
    Pycharm建议专业版 2024.1.1
    • 搭建步骤:

      • 打开pycharm,创建虚拟环境,指定python执行器为3.10版本

      • 源码拷贝到该项目根目录下(.idea文件同级)

      • 本地安装allure,解压allure.zip文件,并且指定下环境变量(\bin目录)

      • 在项目根目录下打开命令行,执行:

        pip install -r .\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 安装依赖 playwright install # 安装浏览器驱动
      • 修改配置文件,config.ini

        # 重点是这条,指定浏览器驱动,本地运行要写上驱动的绝对路径: chrome_driver = C:\Users\800709\AppData\Local\ms-playwright\chromium-1112\chrome-win\chrome.exe firefox_driver = C:\Users\800709\AppData\Local\ms-playwright\firefox-1447\firefox\firefox.exe

2. 运行

  • 流程

  • 命令行执行(强烈推荐这种)

    python {指定用例路径,rundir --run_env={执行环境,Eg: cms} --run_driver={浏览器类型,Eg: chrome} --run_side={执行端, Eg: yunying}

3. 测试数据

  • 放置在data目录,测试数据文件必须是.yaml格式,例如,创建“test.yaml”,以下为内容:
    username: 张三 sex: 男 ssn_card: ${SYS_IDNumber()} # 这里使用自动生成测试数据方式
  • 测试数据在加载过程中,会解析成文件名为key的字典,所以,测试文件名不能重名
  • 数据生成规则,需要遵循解析格式:“${函数名(None | 传参)}”, 目前支持生成如下数据(后续根据系统业务继续完善)
    SYS_RamdonInt(min_num=0, max_num=9999) # 指定范围,生成整数 SYS_PhoneNumber() # 随机电话 SYS_IDNumber() # 随机身份证号码 SYS_NAME() # 随机姓名 SYS_Email() # 随机邮箱 SYS_current_date() # 获取当天的日期 SYS_current_time() # 获取此刻时间 SYS_current_datetime() # 获取此刻日期+时间
  • 在测试用例中使用时,传入data参数,通过data.get(文件名).get(xxxx)形式获取到测试数据
    # 创建test_demo.py文件 def test_01(data): ssn_card = data['test']['ssn_card'] # 这里就引用到了之前我们造的测试数据

4. 用例编写

  • 使用playwright工具进行录制脚本,教程参考:https://blog.csdn.net/liwenxiang629/article/details/130746066
  • 在.\testcases..\conftest.py 文件中,定义了各个模块的登录操作,后续只需要录制好脚本,把登录操作的代码去掉,copy到对应的用例下即可
    # 假设录制的脚本如下,为登录机构侧,进行入库管理的查询操作: page.goto("https://itest.clife.net/senior-services/login") page.get_by_placeholder("请输入用户名").click() page.get_by_placeholder("请输入用户名").fill("nanshanslh") page.get_by_placeholder("请输入密码").click() page.get_by_placeholder("请输入密码").fill("123456") page.get_by_role("button", name="登 录").click() page.get_by_text("库存管理").click() page.get_by_text("入库管理").click() page.get_by_label("入库编号").click() page.get_by_label("入库编号").fill("1234") page.get_by_role("button", name="查 询").click() # 处理后,测试用例如下 def test_01(data, page, tool): page.get_by_text("库存管理").click() page.get_by_text("入库管理").click() page.get_by_label("入库编号").click() page.get_by_label("入库编号").fill("1234") page.get_by_role("button", name="查 询").click()
  • 参数中支出的前置操作对象,可以按需添加使用
    page # 已经登录后的页面对象 tool # 工具类对象 data # 测试数据对象
  • 规范
    • data目录:存放测试数据,必须是.yaml格式的文件,使用到测试数据时,建议目录结构和用例目录结构保持一致,以方便查找。
    • testcases目录:按照模块、功能进行层级划分,最开始需要沟通确定好。
    • 编写测试用例,必须从登录后的步骤开始编写,因为每条测试用例执行完成后,均会自动返回主页。对于组内人员来说,只需要关注data和testcases两个目录即可,划分好模块,提交时可以避免代码冲突。
    • 提交代码时候,仅需要勾选以上两个目录下,自己所负责的模块即可。
  • 工具类,Tool,封装了一些编写用例过程中通用的函数,比如,截图、断言等,具体可以查看.\utils\general_tool\tool.py

5. 代码管理

6. 部署

About

养老ui自动化测试代码库

Language
Python99.5%
Markdown0.5%
gitignore0.1%