我正在將黃瓜與硒組合用於測試java web應用程序。以下是我們的情景將一個場景的輸出作爲輸入輸入到另一個黃瓜場景中
get generate PIN page
enter user name
enter password
click on submit button
現在它根據這麼多的計算在數據庫中生成一個PIN。現在我需要特定的PIN碼,將其作爲不同場景的輸入。我怎麼能做到這一點?提前致謝。
我正在將黃瓜與硒組合用於測試java web應用程序。以下是我們的情景將一個場景的輸出作爲輸入輸入到另一個黃瓜場景中
get generate PIN page
enter user name
enter password
click on submit button
現在它根據這麼多的計算在數據庫中生成一個PIN。現在我需要特定的PIN碼,將其作爲不同場景的輸入。我怎麼能做到這一點?提前致謝。
我會假設你可以在上述場景之後訪問數據庫中的PIN碼。既然如此,我會在獲得並確認PIN確實生成的場景中增加一步。此時,您可以將PIN存儲在本地變量中,然後在下一個場景中使用它。
所以,你的第一個場景是這樣的:
Get generate PIN page
Enter user name
Enter password
Click on submit button
Confirm PIN number in database
最後一步不會被內硒完成,但通過API調用或一些其他手段獲取從數據庫中的PIN碼。它會確認PIN(例如:regex=/^\d{4}$/
),然後將其存儲在局部變量中,比如@customer_pin
(假設您使用的是Ruby)。
你的下一個情景就開始是這樣的:
Get generate login page
Enter customer ID
Enter customer PIN
etc
當你點擊「輸入客戶PIN」的步驟,你在本地存儲的變量(@customer_pin
)拉出。
我的建議是,在執行第二種情況時,您確認在本地存儲的變量中有合法的PIN,以防某人按順序運行此場景。您可以通過使用全局變量,並在您features/support/env.rb
文件中運行「前」掛鉤這樣做:
Before do
$dunit ||= false
return if $dunit
$customer_pin = nil
$dunit = true
end
在這種情況下,我爲了使全局變量來訪問使用$customer_pin
代替@customer_pin
。然後,在運行第一個場景後,$customer_pin
將被分配到一個合法值,以便可以在任何後續場景中使用它。後續場景將使用正則表達式來確認它具有合法值,如果不是,則引發/拋出異常。
您的建議是基於場景的執行順序並依賴於場景的成功。我會建議不要假設執行順序,並期望從其他場景獲得成功。這是衆所周知的反模式。 –
總的來說,我同意,但像生活中的大多數事情一樣......這取決於。上述案例可能是打破編程模式的良好藉口的糟糕例子,因此您的關注很受歡迎。但有時候我會本着大好事的精神破除模式。例如,將較小的測試作爲墊腳石進行較大的測試可能比爲每個測試重複背景設置更有利並且侵入性更小。 –