前言
一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210422。
8、用ddt思想重构项目
- Selenium读取CSV文件
- Selenium读取XML文件
- Selenium读取json文件
- Selenium 读取excel文件
- Selenium读取ini配置文件
- Selenium读取数据库数据
- Selenium参数化测试
- Selenium ddt
- 使用ddt思想重构项目:重构pytest项目:将ddt应用到项目中(用户登录实例)
使用数据驱动就可以简化测试用例
实例:用户登录:分为用户登录成功和失败
from time import sleep
import pytest
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
# class TestUserLogin(unittest.TestCase):
class TestUserLogin(object):
@classmethod
def setup_class(cls):
cls.driver = webdriver.Chrome()
cls.driver.get('http://localhost:8080/jpress/user/login')
cls.driver.maximize_window()
# 准备一组数据,两个用例数据可分别调用
login_data = [
('', 'admin', '账号不能为空'),
('admin', 'admin', '用户中心'),
]
@pytest.mark.parametrize('user,pwd,expected',login_data)
def test_user_login_ok(self,user,pwd,expected):
# # 用户名为空
# user = 'admin'
# pwd = 'admin'
# expected = '用户中心'
# 输入用户名
self.driver.find_element_by_name('user').clear() # 为了把上面案例输入的值清空
self.driver.find_element_by_name('user').send_keys(user)
# 输入密码
self.driver.find_element_by_name('pwd').clear()
self.driver.find_element_by_name('pwd').send_keys(pwd)
# 点击登录
# self.driver.find_element_by_xpath('/html/body/div/div/div/form/div[3]/div/button').click()
self.driver.find_element_by_css_selector('body > div > div > div > form > div.row > div > button').click()
# 等待标题
if user =='':
WebDriverWait(self.driver, 5).until(EC.title_is(expected))
alert = self.driver.switch_to.alert
# 获取弹窗上的文字来比较
assert alert.text == expected
sleep(5)
alert.accept()
sleep(2)
else:
# 等待标题
WebDriverWait(self.driver, 5).until(EC.title_is(expected))
sleep(3)
# 验证 因为没有错误弹窗 所以用到了title断言判断
assert self.driver.title == expected
if __name__ == '__main__':
# unittest.main()
pytest.main(['-sv', 'test_user_login.py'])
运行结果: