系统是 ubuntu,工具是 pycharm 社区版
这里单独运行 test_login_001 为什么会报错,有 ddt 数据驱动
test2_null_user_login,单独运行就能成功,没有 ddt 数据驱动
运行 if name == 'main',就都能运行三个用例不会报错
加新用例后,想进行调试都要运行这个文件,或者注释掉其他的用例
import os
import unittest
from ddt import ddt, file_data
from framework.browser_engine import BrowserEngine
from framework.browser_info import Browser_Info
from page_objects.test_login_logout.test_login import Login_And_Logout_Page
from framework.logger import Logger
logger = Logger(logger='测试结果').get_log()
get_browser_info = Browser_Info()
project_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
data_path = os.path.join(project_path, 'data', 'account.json') # 指定JSON文件的路径
@ddt
class TestRegister(unittest.TestCase):
"""
测试注册模块
"""
def setUp(self):
"""
测试固件的setUp()的代码,主要是测试的前提准备工作
"""
browser = BrowserEngine(self)
self.driver = browser.open_browser(self)
def tearDown(self):
"""
测试结束后的操作,这里基本上都是关闭浏览器
"""
# self.driver.close()
self.driver.quit()
# 拿到json里的数据进行数据驱动测试
@file_data(data_path)
def test_login_001(self, **kwargs):
"""
admin账号登录
"""
print(data_path)
name = kwargs.get('name')
password = kwargs.get('password')
captcha = kwargs.get('captcha')
register_page = Login_And_Logout_Page(self.driver)
result = register_page.get_login_result(name, password, captcha)
if result:
self.assertTrue(result, logger.info("登录用例执行成功."))
else:
self.assertTrue(result, logger.error("登录用例执行失败!"))
def test2_null_user_login(self):
"""
空用户名登录
"""
register_page = Login_And_Logout_Page(self.driver)
result = register_page.get_null_user_login()
if result:
self.assertTrue(result, logger.info("空用户名登录用例执行成功."))
else:
self.assertTrue(result, logger.error("空用户名登录用例执行失败!"))
if __name__ == '__main__':
unittest.main()
网上说的把光标放外面什么的,都不行
看报错是找不到对应的用例,ddt 是修改了用例名称的。你可以试试其他方法加载用例
unittest 不会像 pytest 那样自动发现执行用例,得你自己指定测试方法到测试套件中
ddt 数据驱动下的该测试方法会动态生成一系列测试用例,每个数据集就是一个,你不能用 pycharm 自带去发现执行,得将这测试方法加到 TestSuite,用 unittest 去执行
算了,要调试的时候去掉 ddt