如何使用pywinauto运行简单的pytest-bdd测试?

时间:2019-09-10 14:17:15

标签: python pytest pywinauto

我正在尝试设置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”测试,则该测试将运行,并且文本将输入到记事本中。出于某种原因,“然后”将其完全弄乱了,没有任何内容输入到编辑器中。

0 个答案:

没有答案