【三】behave实例二
目标:在编写测试时使用自然语言,下面我们用一个简单的实例来展开:
1.编写Feature Test
#文件:features/tutorial_natual_language.feature
Feature: 购买化妆品
为了买到合适的化妆品
作为一个化妆小能手
我想找几个女生来测试下
基于不同肤质
Scenario: 油皮
Given 化妆品我有lanKou
When 女生是girlB
Then 脸的感觉应该是自然
Scenario: 干皮
Given 化妆品我有IPSA
When 女生是girlA
Then 脸的感觉应该是服帖
2.提供模型
#file:features/steps/step_tutorial02.py
class Cosmetics(object): """ 化妆品的种类 """ def __init__(self, with_cosmetics_level=None): self.with_cosmetics_level = with_cosmetics_level self.girl = None def Fit(self): """ 化妆品的种类判断和女孩肤质测验 """ assert self.with_cosmetics_level is not None assert self.girl is not None if self.girl == "girlB": return "自然" if "IPSA" in self.with_cosmetics_level: return "服帖" else: return "自然"
3.提供自动化测试
#file:features/steps/step_tutorial02.py
# encoding:utf-8 # date:2019/11/7 16:54 # @Author:sunny from behave import given, when, then from hamcrest import assert_that, equal_to, is_not @given('化妆品我有{cosmetics_level}') def step_the_cosmetics_has_a(context, cosmetics_level): context.cosmetics = Cosmetics(cosmetics_level) @when('女生是{girl}') def step_attacked_by(context, girl): context.cosmetics.girl = girl @then('脸的感觉应该是{feel}') def step_the_ninja_should(context, feel): assert_that(feel, equal_to(context.cosmetics.Fit()))
运行Feature Test结果:
E:\exercise\producer2-test>behave Feature: 购买化妆品 # features/tutorial02_natural_language.feature:1 为了买到合适的化妆品 作为一个化妆小能手 我想找几个女生来测试下 基于不同肤质 Scenario: 油皮 # features/tutorial02_natural_language.feature:8 Given 化妆品我有lanKou # features/steps/step_tutorial02.py:32 When 女生是girlB # features/steps/step_tutorial02.py:36 Then 脸的感觉应该是自然 # features/steps/step_tutorial02.py:40 Scenario: 干皮 # features/tutorial02_natural_language.feature:13 Given 化妆品我有IPSA # features/steps/step_tutorial02.py:32 When 女生是girlA # features/steps/step_tutorial02.py:36 Then 脸的感觉应该是服帖 # features/steps/step_tutorial02.py:40 1 feature passed, 0 failed, 0 skipped 2 scenarios passed, 0 failed, 0 skipped 6 steps passed, 0 failed, 0 skipped, 0 undefined Took 0m0.003s E:\exercise\producer2-test>
以上结果可以看出,运行通过。
善于跌倒仍喜爱奔跑~

浙公网安备 33010602011771号