自动化福音(爬虫、办公、测试等) SeleniumBase 使用笔记(五)
SeleniumBase 利用数据驱动 方式运行
有同学问我,如何对 SeleniumBase
使用数据驱动 见评论区,于是有了这个文章。
目录
继承方式
这种方式的使用,前提是你的代码使用的继承BaseCase
类的方式编写的,此时需要用parameterized.expand
来装饰,而不能用pytest.mark.parametrize
,具体如下:
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@ File : test.py
@ Author : yqbao
@ Version : V1.0.0
@ Description : 数据驱动
"""
from parameterized import parameterized
from seleniumbase import BaseCase
BaseCase.main(__name__, __file__)
class TestParameterized(BaseCase):
@parameterized.expand(
[
['standard_user', 'secret_sauce'],
['locked_out_user', 'secret_sauce']
]
)
# 按照顺序解析到对应的参数中
def test_parameterized_login(self, username, password):
self.open("https://www.saucedemo.com")
self.type("#user-name", username)
self.type("#password", password)
self.click('input[type="submit"]')
夹具方式
这种方式的使用,可以兼容pytest.mark.parametrize
装饰方法,因为SeleniumBase
夹具的使用方式有两种,所以这里也就有两种驱动方式,具体如下:
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@ File : test.py
@ Author : yqbao
@ Version : V1.0.0
@ Description : 数据驱动
"""
import pytest
# 没有类时,直接使用
@pytest.mark.parametrize('username,password', [
('standard_user', 'secret_sauce'),
('locked_out_user', 'secret_sauce')
])
def test_sb_fixture_with_no_class(sb, username, password):
sb.open("https://www.saucedemo.com")
sb.type("#user-name", username)
sb.type("#password", password)
sb.click('input[type="submit"]')
# 有类时,应用于类中
class TestSBFixtureParameterized:
@pytest.mark.parametrize('username,password', [
('standard_user', 'secret_sauce'),
('locked_out_user', 'secret_sauce')
])
def test_sb_fixture_parameterized_login(self, sb, username, password):
sb.open("https://www.saucedemo.com")
sb.type("#user-name", username)
sb.type("#password", password)
sb.click('input[type="submit"]')
GitHub SeleniumBase
本文章的原文地址
GitHub主页