Pytest可以在多个级别上实现测试参数化

一.@pytest.fixture装饰器调用参数

示例

import pytest
from selenium import webdriver
from time import sleep @pytest.fixture(scope="module",params=["python","java"])
def modarg(request):
param = request.param
# print(f"setup modarg {param}")
yield param
# print(f"teardown modarg {param}")
def test_login(modarg):
dr = webdriver.Chrome()
dr.get('https://www.baidu.com')
dr.find_element_by_id('kw').send_keys(modarg)
dr.find_element_by_id('su').click()
sleep(2)
print(modarg)
dr.quit()

执行:

pytest -v -s xxx.py

二. @pytest.mark.parametrize :参数化测试功能

示例1

import pytest
from selenium import webdriver
from time import sleep
@pytest.mark.parametrize(
"username",
[
"python",
"java"
]
) def test_login(username):
dr = webdriver.Chrome()
dr.get('https://www.baidu.com')
dr.find_element_by_id('kw').send_keys(username)
dr.find_element_by_id('su').click()
sleep(2)
print(username)
dr.quit()

执行方式同上!

多参数示例2:

import pytest
from selenium import webdriver
from time import sleep
@pytest.mark.parametrize(
"username,password",
[
("admin","admin123"),
("guest","guest123"),
]
) def test_login(username,password):
dr = webdriver.Chrome()
dr.maximize_window()
dr.get('https://www.baidu.com')
js = "document.querySelector('#u1 > a.s-top-login-btn.c-btn.c-btn-primary.c-btn-mini.lb').click()"
dr.execute_script(js)
sleep(1)
js1 = "document.querySelector('#TANGRAM__PSP_11__footerULoginBtn').click()"
dr.execute_script(js1)
sleep(1)
dr.find_element_by_id('TANGRAM__PSP_11__userName').send_keys(username)
dr.find_element_by_id('TANGRAM__PSP_11__password').send_keys(password)
js2 = "document.querySelector('#TANGRAM__PSP_11__submit').click()"
dr.execute_script(js2)
sleep(2)
print(username)
print(password)
dr.quit()

执行:

最新文章

  1. SAP自定义权限对象
  2. Python 调用 user32.dll
  3. 《BI那点儿事》META DATA(元数据)
  4. PV UV IP含义及区别
  5. python numpy sum函数用法
  6. 三种方式得到LayoutInflater
  7. ASP.NET MVC 过滤器Filter
  8. 【Android纳米学位】project 0 - 问题汇总
  9. js深入研究之类定义与使用
  10. Filter - Surge.js模板引擎过滤器
  11. div光标定位问题总结
  12. CodeForces 78D Archer's Shot
  13. Docker学习笔记 - Docker的容器
  14. 07-MYSQL多表查询
  15. SSD固态硬盘测试工具收集(持续更新)
  16. SQUAD的rnet复现踩坑记
  17. Keil C 中全局变量 extern 的使用
  18. oracle12c新特点之可插拔数据库(Pluggable Database,PDB)
  19. 9.1 UDP协议
  20. React的setState如何实现同步处理数据

热门文章

  1. CentOS7 Nginx-1.10.3编译安装
  2. Django model总结(上)
  3. 三分钟带你分清Mysql 和Oracle之间的误区
  4. python gunicorn详解
  5. 完美解决CentOS8 yum安装AppStream报错,更新yum后无法makecache的问题
  6. Python实现微信支付(三种方式)
  7. 一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试
  8. JavaWeb项目问题记录
  9. 3.java设计模式之工厂模式
  10. CentOS 8.x 下尝试安装.Net 5 的运行时