我正在尝试设置pytest-bdd pywinauto测试,但无法正常工作。
我无法使用pywinauto找到任何简单的示例。 pytest-bdd的官方文档中只有一个硒示例,但由于我不熟悉它,因此我无法理解。
这是我的项目结构,同一文件夹中只有两个文件: foo.feature test_foo.py
这是foo.feature
文件的内容:
Feature: Type stuff
The user should be able to type stuff into notepad.
Scenario: Type a sentence
Given Application object exists
When I start notepad
And Focus on the window
And I type some stuff
Then Typed stuff should be visible
这是test_foo.py
文件的内容:
import pytest
from pytest_bdd import scenario, given, when, then, parsers
from pywinauto.application import Application
from pywinauto.keyboard import send_keys
@scenario('foo.feature', 'Type a sentence')
def test_foo():
pass
@pytest.fixture()
def app():
return Application()
@given("Application object exists")
def app_exists(app):
assert 'app' in locals()
@when("I start notepad")
def start_notepad(app):
app.start("notepad.exe")
@when("Focus on the window")
def notepad_focus(app):
app.top_window().set_focus()
@when("I type some stuff")
def type_stuff():
send_keys("Hello, world!", with_spaces=True)
@then("Typed stuff should be visible")
def typed_stuff_visible(app):
edit_field = app.top_window().window(class_name='Edit')
assert edit_field.texts()[0] == 'Hello, world!'
由于某种原因,我无法使用“ then”灯具。测试失败,并显示以下错误:
E pytest_bdd.exceptions.StepDefinitionNotFoundError: Step definition is not found: When "I type some stuff
E Then Typed stuff should be visible". Line 9 in scenario "Type a sentence" in the feature "C:\Users\...\foo.feature
如果我从foo.feature
文件中删除“ then”测试,则该测试将运行,并且文本将输入到记事本中。出于某种原因,“然后”将其完全弄乱了,没有任何内容输入到编辑器中。