python行为驱动小笔记
执行方式:
lettuce features1
D:\TOOL\PycharmProjects\python2\CS\xingweiqudong>lettuce features1d:\program files\python\lib\site-packages\fuzzywuzzy\fuzz.py:35: UserWarning: Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning warnings.warn('Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning')Feature: Compute factorial # \features1\zero.feature:1 In order to play with Lettuce # \features1\zero.feature:2 As beginners # \features1\zero.feature:3 We'll implement factorial # \features1\zero.feature:4 Scenario: Factorial of 0 # \features1\zero.feature:6 Given I have the number 0 # \features1\steps.py:37 When I compute its factorial # \features1\steps.py:44 Then I see the number 1 # \features1\steps.py:51 Scenario: Factorial of 1 # \features1\zero.feature:11 Given I have the number 1 # \features1\steps.py:37 When I compute its factorial # \features1\steps.py:44 Then I see the number 1 # \features1\steps.py:51 Scenario: Factorial of 2 # \features1\zero.feature:16 Given I have the number 2 # \features1\steps.py:37 When I compute its factorial # \features1\steps.py:44 Then I see the number 2 # \features1\steps.py:51 Scenario: Factorial of 3 # \features1\zero.feature:21 Given I have the number 3 # \features1\steps.py:37 When I compute its factorial # \features1\steps.py:44 Then I see the number 6 # \features1\steps.py:511 feature (1 passed)4 scenarios (4 passed)12 steps (12 passed)D:\TOOL\PycharmProjects\python2\CS\xingweiqudong>lettuce featuresd:\program files\python\lib\site-packages\fuzzywuzzy\fuzz.py:35: UserWarning: Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning warnings.warn('Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning')Feature: Compute factorial # \features\zero.feature:1 In order to play with Lettuce # \features\zero.feature:2 As beginners # \features\zero.feature:3 We'll implement factorial # \features\zero.feature:4 Scenario: Factorial of 0 # \features\zero.feature:6 Given I have the number 0 # \features\step.py:13 When I compute its factorial # \features\step.py:18 Then I see the number 1 # \features\step.py:24 Scenario: Factorial of 1 # \features\zero.feature:11 Given I have the number 1 # \features\step.py:13 When I compute its factorial # \features\step.py:18 Then I see the number 1 # \features\step.py:24 Scenario: Factorial of 2 # \features\zero.feature:16 Given I have the number 2 # \features\step.py:13 When I compute its factorial # \features\step.py:18 Then I see the number 2 # \features\step.py:24 Scenario: Factorial of 3 # \features\zero.feature:21 Given I have the number 3 # \features\step.py:13 When I compute its factorial # \features\step.py:18 Then I see the number 6 # \features\step.py:24 Scenario: Factorial of 4 # \features\zero.feature:26 Given I have the number 3 # \features\step.py:13 When I compute its factorial # \features\step.py:18 Then I see the number 6 # \features\step.py:24 Scenario: Factorial of 5 # \features\zero.feature:31 Given I have the number 3 # \features\step.py:13 When I compute its factorial # \features\step.py:18 Then I see the number 6 # \features\step.py:24 Scenario: Factorial of 6 # \features\zero.feature:36 Given I have the number 3 # \features\step.py:13 When I compute its factorial # \features\step.py:18 Then I see the number 6 # \features\step.py:241 feature (1 passed)7 scenarios (7 passed)21 steps (21 passed)D:\TOOL\PycharmProjects\python2\CS\xingweiqudong>
代码1
# encoding=utf-8from lettuce import world, stepsdef factorial(number): number = int(number) if (number == 0) or (number == 1): return 1 else: return reduce(lambda x, y: x * y, range(1, number + 1))@stepsclass FactorialSteps(object): """Methods in exclude or starting with _ will not be considered as step""" exclude = ['set_number', 'get_number'] def __init__(self, environs): # 初始全局变量 self.environs = environs def set_number(self, value): # 设置全局变量中的number变量的值 self.environs.number = int(value) def get_number(self): # 从全局变量中取出number的值 return self.environs.number def _assert_number_is(self, expected, msg="Got %d"): number = self.get_number() # 断言 assert number == expected, msg % number def have_the_number(self, step, number): '''I have the number (\d+)''' # 上面的三引号引起的代码必须写,并且必须是三引号引起 # 表示从场景步骤中获取需要的数据 # 并将获得数据存到环境变量number中 self.set_number(number) def i_compute_its_factorial(self, step): """When I compute its factorial""" number = self.get_number() # 调用factorial方法进行阶乘结算, # 并将结算结果存于全局变量中的number中 self.set_number(factorial(number)) def check_number(self, step, expected): '''I see the number (\d+)''' # 上面的三引号引起的代码必须写,并且必须是三引号引起 # 表示从场景步骤中获取需要的数据以便断言测试结果 self._assert_number_is(int(expected))FactorialSteps(world)
用例
Feature: Compute factorial In order to play with Lettuce As beginners We'll implement factorial Scenario: Factorial of 0 Given I have the number 0 When I compute its factorial Then I see the number 1 Scenario: Factorial of 1 Given I have the number 1 When I compute its factorial Then I see the number 1 Scenario: Factorial of 2 Given I have the number 2 When I compute its factorial Then I see the number 2 Scenario: Factorial of 3 Given I have the number 3 When I compute its factorial Then I see the number 6
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。