1

私は2つのファイルを持っています:

steps.py:

from lettuce import *
from splinter.browser import Browser

@before.harvest
def set_browser():
  world.browser = Browser('webdriver.chrome')
@step(u'Given I visit "([^"]*)"')
def given_i_visit(step, url):
  world.browser.visit(url)

テスト機能:

Feature: Do some basic tests
  Scenario: Check whether the website is accessable
    Given I visit "/"

それらに対してレタスを実行すると、次のように返されます。

Feature: Do some basic tests                        # features/test.feature:1

  Scenario: Check whether the website is accessable # features/test.feature:2
  Given I visit "/"                               # features/steps.py:8
  Traceback (most recent call last):
    File "/..../site-packages/lettuce/core.py", line 125, in __call__
      ret = self.function(self.step, *args, **kw)
    File "/..../test/features/steps.py", line 9, in given_i_visit
      world.browser.visit(url)
  AttributeError: 'thread._local' object has no attribute 'browser'

1 feature (0 passed)
1 scenario (0 passed)
1 step (1 failed, 0 passed)

何がうまくいかないのかについてのアイデアはありますか?

4

2 に答える 2

1

ドキュメントにはありませんが。Terrain.py ファイルをステップおよびフィーチャ ファイルと同じディレクトリに配置します。world 属性を任意の値で初期化したので問題ありません。

于 2013-01-25T19:00:31.083 に答える
0

問題は、before.harvest が何らかのデータを取得するため、正しいコードは次のようになることです。

from lettuce import *
from splinter import Browser

@before.harvest
def set_browser(data):
  world.browser = Browser('webdriver.chrome')

@step(u'Given I visit "([^"]*)"')
 def given_i_visit(step, url):
  world.browser.visit(url)

それが役に立てば幸い!

于 2015-02-23T12:58:18.740 に答える