pytest中testcase的self
时间: 2023-08-22 20:11:24 浏览: 254
在pytest中,testcase的self是指测试用例中的self参数。self是一个约定俗成的参数名,表示当前测试用例实例本身。通过self参数,可以在测试用例中访问类的属性和方法。在pytest中,self参数通常用于测试类中的测试方法,以便在测试方法中使用类的其他属性和方法。
#### 引用[.reference_title]
- *1* *2* *3* [pytest测试框架](https://blog.csdn.net/egegerhn/article/details/123497001)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
相关问题
def test_dws_002_login(self, start_browser): # 驱动并打开网页 driver = start_browser #登录 driver.find_element(By.XPATH, "//*[@id='ECS_MEMBERZONE']/a[1]").click() driver.find_element(By.ID, "account_l").send_keys("15000900773") driver.find_element(By.ID, "password_l").send_keys("159357") driver.find_element(By.ID, "jsLoginBtn").click() test_users.py::Testuser::test_dws_002_login ERROR [100%] test setup failed file C:\Users\TUF\PycharmProjects\pythonProject\UIonlineshoptest\testcase\testusers\test_users.py, line 33 def test_dws_002_login(self, start_browser): file C:\Users\TUF\PycharmProjects\pythonProject\UIonlineshoptest\testcase\conftest.py, line 10 @pytest.fixture() def start_browser(self): E fixture 'self' not found > available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, doctest_namespace, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, start_browser, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory > use 'pytest --fixtures [testpath]' for help on them. C:\Users\TUF\PycharmProjects\pythonProject\UIonlineshoptest\testcase\conftest.py:10 这里怎么失败了,此外ui自动化如何断言登录成功
根据错误信息,测试用例`test_dws_002_login`无法找到名为`start_browser`的夹具。这可能是因为您在conftest.py中定义的前置方法没有正确命名。
请确保在conftest.py中的前置方法名称与测试用例中的夹具名称完全一致。在您的情况下,将前置方法名称修改为`start_browser`,代码如下所示:
```python
@pytest.fixture()
def start_browser():
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
# 打开网页
driver.get("http://meikefresh.5istudy.online/")
driver.maximize_window()
yield driver
driver.quit()
```
关于如何断言登录成功,您可以使用Selenium提供的断言方法来验证登录是否成功。例如,您可以在登录后,检查页面是否存在登录成功后的某些元素或者通过判断页面跳转来确定登录是否成功。
以下是一个示例断言登录成功的代码片段:
```python
from selenium.webdriver.support import expected_conditions as EC
def test_dws_002_login(self, start_browser):
driver = start_browser
# 登录
driver.find_element(By.XPATH, "//*[@id='ECS_MEMBERZONE']/a[1]").click()
driver.find_element(By.ID, "account_l").send_keys("15000900773")
driver.find_element(By.ID, "password_l").send_keys("159357")
driver.find_element(By.ID, "jsLoginBtn").click()
# 断言登录成功
assert EC.presence_of_element_located((By.XPATH, "//*[contains(text(), 'Welcome')]"))(driver)
# 其他测试步骤...
```
在上面的代码中,使用了`expected_conditions`来等待页面中是否出现包含"Welcome"文本的元素,如果存在,则断言登录成功。
希望这可以解决您的问题!如果还有其他疑问,请随时提出。
pytest使用ddt
pytest使用ddt可以实现数据驱动测试,以下是使用ddt的示例代码:
```python
import unittest
from ddt import ddt, data, unpack
@ddt
class TestStringMethods(unittest.TestCase):
@data(('3+5', 8), ('2+4', 6), ('6*9', 54))
@unpack
def test_eval(self, expression, result):
self.assertEqual(eval(expression), result)
```
在上面的示例中,使用了ddt装饰器,然后使用data装饰器传入测试数据,其中每个测试数据都是一个元组,元组中包含两个元素,第一个元素是表达式,第二个元素是表达式的结果。使用unpack装饰器可以将元组中的元素分别传入测试方法中。
阅读全文