在开始python和TDD时,我想知道如何使用python和场景表来运行以下两个场景的行为步骤:
程序要求用户输入数据(湿度、等级和温度),然后打印这些数据。
问题是,当我使用asks命令运行步骤时,它要求我输入数据,但我希望程序在gherkin场景中使用数据表。你能帮忙吗?
gherkin设想情况如下:
Feature: As a user I want fill out humidex data to visualize it
Scenario: user fill out humidex data correctly
Given a user
When user fill out humidexdata
|humidity|temperature|
|50% |28C° |
Then user visualize
|humidity|temperature|
|50% |28C° |
Scenario: user fill out humidex data with text
Given a user
When user fill out humidexdata
|humidity |temperature|
|lorem ipsum|lorem ipsum|
Then user visualize a syntax error "data syntax is wrong retry"具有行为的step实现:
from behave import *
from fillouthumidexdata import *
@given(u'a user')
def step_impl(context):
context.user = User()
@when(u'user fill out humidexdata')
def step_impl(context):
context.user.fillout_humidexData()
@then(u'user visualize')
def step_impl(context):
context.user.visualize_humidexData()python代码:
class User():
def __init__(self):
self.humidity = []
self.temperature =[]
def fillout_humidexData(self):
print("Enter humidity level (%)")
input(self.humidity)
print("Enter temperature (C°)")
input(self.temperature)
def visualize_humidexData(self):
print(self.humidity)
print(self.temperature)发布于 2020-06-14 22:10:24
我不知道为什么实际上需要单独的User类,因为所有这些都可以通过简单的步骤来完成,但是按照这种方法,我将首先对User类做一些修改,至少是:
class User():
def __init__(self):
self.humidity = 0
self.temperature = 0
def fillout_humidexData(self, humidity, temperature):
self.humidity = humidity
self.temperature = temperature
def visualize_humidexData(self):
print(f'humidity: {self.humidity}')
print(f'temperature: {self.temperature}')然后使用以下步骤:
from behave import step, given, when, then
from fillouthumidexdata import *
@given(u'a user')
def step_impl(context):
context.user = User()
@when(u'user fill out humidexdata')
def step_impl(context):
humidity, temperature = context.table.rows[0]
context.user.fillout_humidexData(humidity, temperature)
@then(u'user visualize')
def step_impl(context):
context.user.visualize_humidexData()行应该为您提供安装表中第一行的值(2列的值)。我认为这是可行的,但我不确定这是否是你想要的。
https://stackoverflow.com/questions/62346768
复制相似问题