美多商城接口自动化测试项目代码框架

目录

美多商城接口自动化测试项目框架代码

utils

AssertUtil.py

  • AssertUtil类(断言封装)

    • assert_code方法

验证返回状态码

assert int(code) == int(expected_code)

- assert_body方法

验证返回结果内容相等

assert body == expected_body

- assert_in_body方法

验证返回结果是否包含期望的结果

assert expected_body in body

EmailUtil.py

  • SendEmail类

    • __init__方法:初始化,当类被实例化之后,会获得smtp地址,用户名,密码,接收邮件者,邮件标题,邮件内容,邮件附件等信息
    • send_mail方法

      • 初始化邮件信息
      • 判断是否有附件
      • MIMEText读取文件、设置内容类型、设置附件头
      • 将内容附加到邮件主体中
      • 登录邮件服务器
      • 发送邮件

ExcelUtil.py

  • ExcelReader类

    • data方法:读取sheet方式,名称,索引

LogUtil.py

  • Logger类

    • 输出控制台
    • 输出文件
  • my_log:对外方法,初始log工具类,提供其它类使用

MysqlUtil.py

大多数情况下,我们接口自动化测试需要对数据库进行验证,比如说,我们在注册接口中,需要验证数据库中是否有新增的数据,这时候我们就需要对数据库进行查询,然后对查询结果进行断言。比如说,我们需要对订单接口进行测试,需要验证数据库中的订单数据是否正确,这时候我们就需要对数据库进行查询,然后对查询结果进行断言。

  • Mysql封装类

    • __init__方法:链接数据库,光标对象
    • fetchone方法:单个查询
    • fetchall方法:多个查询
    • exec方法:执行数据库,比如说增删查改

RequestsUtil.py

  • Request类

    • get方法
    • post方法

YamlUtil.py

  • YamlReader类

    • data方法:单个文件读取
    • data_all方法:多个文档读取

config

Conf.py

  • 获取文件/目录路径方法

    • report路径
    • 测试数据data路径
    • db_conf.yml路径
    • config目录的路径

      • conf.yml文件的路径
    • Log文件路径
  • ConfigYaml类

    • get_excel_file:获取测试用例excel名称方法
    • get_excel_sheet:获取测试用例sheet名称方法
    • get_conf_url:获取接口地址方法
    • get_conf_log:获取日志级别方法
    • get_conf_log_extension:获取文件扩展名方法
    • get_db_conf_info:根据db_alias获取该名称下的数据库信息方法
    • get_email_info:获取邮件配置相关信息

conf.yml

  • BASE

    • log_level

      • debug:默认
      • info
      • warning
      • error
    • log_extension
    • test

      • url
      • cae_file
      • case_sheet
  • email

    • smtpserver
    • username
    • password
    • receiver

db_conf.yml

  • dh_1

    • dh_host
    • dh_user
    • dh_password
    • dh_name
    • dh_charset
    • dh_port
  • dh_2

  • dh_3

common

Base.py

  • init_db方法:初始数据化信息,初始化mysql对象
  • assert_db方法:数据库的结果与接口返回的结果验证
  • json_parse方法:格式化字符,转换json
  • res_find方法:查询符合’${(.*)}$‘的所有字符串
  • res_sub方法:替换字符串
  • params_find方法:验证请求中是否有${}$需要结果关联
  • allure_report方法:生成allure 报告

    • #执行命令 allure generate allure_cmd =”allure generate %s -o %s –clean”%(report_path,report_html)
    • #subprocess.call subprocess.call(allure_cmd,shell=True)
  • send_mail方法

    • 使用ConfigYaml().get_email_info()获得email信息
    • 使用SendEmail类的send_mail方法发送邮件

ExcelConfig.py

  • DataConfig类

    • 包括用例ID,模块,接口名称,请求URL,前置条件,请求类型,请求参数类型,请求参数 预期结果,实际结果,备注,是否运行,headers,cookies,status_code,数据库验证等等

ExcelData.py

  • Data类

    • get_run_data方法: 获取全部测试用例
    • get_run_data方法: 根据是否运行列==y,获取执行测试用例
    • get_case_pre方法: 根据前置条件:从全部测试用例取到测试用例

data

testdata.xlsx

  • 登录

    • 请求方式:POST/authorizations
    • 请求参数:1. username 2. password 返回数据:1. username 2. user_id 3. token(身份认证凭据)

      • 空白

        • 无效数据。期待为字典类型
      • {“username”:””,”password”:”12345678”}

        • username’: [‘该字段不能为空。’]
      • {“username”:””,”password”:””}

        • password’: [‘该字段不能为空。’]
      • {“username”:”python”,”password”:”12345678”}

        • user_id’: 1, ‘username’: ‘python’
      • {“username”:”python”,”password”:”test123”}

        • 无法使用提供的认证信息登录
  • 用户中心个人信息

    • 请求方式: GET /user/
    • 返回数据:id username mobile email email_active

      • 身份认证信息未提供
      • id’: 1, ‘username’: ‘python’, ‘mobile’: ‘17701397029’, ‘email’: ‘952673638@qq.com’
  • 获取商品列表数据

    • 请求方式: GET /categories/(?P<category_id>\d+)/skus?page=xxx&page_size=xxx&ordering=xxx
    • 请求参数:categroy_id,page,page_size,ordering
    • 返回参数:id name price default_image_url(默认图片) comments
  • 添加到购物车

    • 请求方式 : POST /cart/
    • 请求参数:sku_id(商品sku id) count(数量)selected(是否勾选,默认勾选)
    • 返回数据:sku_id count selected
  • 保存订单

    • 请求方式 : POST /orders/
    • 请求参数:address pay_method
    • 返回数据:order_id 订单编号

testlogin.yml

  • case_name:测试用例名称
  • “url”: “/authorizations/”
  • data

    • username
    • password
  • expect: 期望结果

logs

日志文件名称

日志文件名称= logs目录 + 当前时间+扩展名

日志文件内容

’%(asctime)s %(name)s %(levelname)s %(message)s ‘

report

report.html

result

  • report.html

run and requirement

pytest.ini

  • addopts :报告生成地址
  • testpaths = testcase # 测试路径:testcase文件夹
  • python_files = test_*.py # testcase文件夹下面test开头的py文件
  • python_classes = Test_* # Test开头的类
  • python_functions = test_* # test开头的函数

requirements.txt

  • pip install pipreqs # 安装pipreqs
  • pipreqs ./ # 生成requirements.txt
  • pip install -r requirements.txt # 安装项目依赖的包

run.py执行测试用例

  • report_path report_html_path pytest.main([“-s”,”–alluredir”,report_path]) Base.send_mail()

testcase

t_log

  • log_demo.py:设置配置信息;定义日志名称getlogger;设置日志级别
  • log_file_demo.py:设置log级别,handler,日志级别,输出格式,将日志等写入文件

t_allure

  • allure_demo.py

    • @allure.feature一级标签
    • @allure.title测试用例标题
    • @allure.description执行测试用例结果的描述
    • @allure.story二级标签
    • allure.dynamic多个输入结果

t_pytest

  • pytest_assert.py断言测试
  • pytest_class.py

    • setup_class在类中所有方法执行前执行
    • teardown_class在类中所有方法执行后执行
  • pytest_demo.py

    • 断言的方法
    • @pytest.mark.flaky(reruns=3,reruns_delay=2) #失败重跑3次,每次间隔2秒 flaky插件表示失败重跑

t_excel

  • excel_demo.py:获取testdata.xlsx行列信息

t_yml

  • yaml_demo.py

    • yaml.safe_load:使用yaml读取文件
    • yaml.safe_load_all: 读取多个文档

t_subprocess

  • subprocess_demo.py

    • shell=True 会调用shell

test_login.py

  • 获取测试用例内容list “case_name”: “登录成功用例” “case_name”: “登录失败用例”
  • 参数化执行测试用例

test_excel_case.py

  • TestExcel类

    • run_api方法发送请求API
    • run_pre方法初始化数据
    • test_run方法

      • 验证前置条件
      • 找到执行用例
      • allure创建执行报告
      • 断言验证

test_Mall.py

  • test_login方法:登录测试
  • test_info方法:个人信息
  • goods_list方法:商品列表数据
  • cart方法:添加购物车
  • order方法:保存购物车

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦