selenium3+python3——数据驱动parameterized

一、环境准备

1.安装parameterized模块,打开cmd输入pip install parameterized在线安装

>>pip install parameterized

二、参考案例

 @parameterized.expand()装饰器装饰测试用例test_login(),而其中的每个元组都可以被认为是一条测试用例,name对应“case1”,“case2”,“case3”,username对应一个个账号,passwd对应密码

参考代码:

from time import sleep
from selenium import webdriver
import unittest
from parameterized import parameterized


class MyTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.implicitly_wait(5)

def login(self, username, password):
self.driver.get("http://mail.163.com")
# self.driver.find_element_by_link_text("密码登录").click()
login_frame = self.driver.find_element_by_css_selector('iframe[id^="x-URS-iframe"]')
self.driver.switch_to.frame(login_frame)
self.driver.find_element_by_class_name('j-inputtext.dlemail.j-nameforslide').clear()
self.driver.find_element_by_class_name('j-inputtext.dlemail.j-nameforslide').send_keys(username)
self.driver.find_element_by_name("password").clear()
self.driver.find_element_by_name("password").send_keys(password)
self.driver.find_element_by_id('dologin').click()
sleep(4)

def logout(self):
self.driver.find_element_by_link_text("退出").click()

@parameterized.expand([
("case1", "xyuer1019", "123456"),
("case2", "", "123456"),
("case3", "xyuer", ""),
("case4", "error", "error"),


])
def test_login(self, case, username, password):
self.login(username, password)
self.logout()

@classmethod
def tearDownClass(cls):
cls.driver.quit()


if __name__ == '__main__':
unittest.main(verbosity=2)

结果:

test_login_0_case1 (__main__.MyTest) ... ok
test_login_1_case2 (__main__.MyTest) ... ERROR
test_login_2_case3 (__main__.MyTest) ... ERROR
test_login_3_case4 (__main__.MyTest) ... ERROR

posted @ 2020-05-13 14:36  Penny悦  阅读(603)  评论(0编辑  收藏  举报