def test_notification(): init() with Feature(u"测试notification", ["flask.ext.report.test.tests.steps.notification_step"]): with Scenario(u"初始化"): given(u"初始化notification") with Scenario(u"notification的修改"): browser = when(u"访问notification", id_=1) browser = then(u"修改notification的name成功", browser) browser = when(u"启用notification", browser) then(u"启用成功", browser)
def test(): flask_sqlalchemy_setup(app, db, create_step_prefix=u"创建", model_name_getter=lambda model: model.__name__, attr_name_getter=lambda model, attr: model.__col_desc__.get(attr, attr), set_step_pattern=u'(\w+)([\.\w+]+)设置为(.+)') with Feature(u"订单测试",step_files=["litefac.test.at.steps.order"]): with Scenario(u"准备数据"): plate = given(u"创建Plate", name=generate(5)) product_type_default = and_(u"创建ProductType", name=constants.DEFAULT_PRODUCT_TYPE_NAME) product_default = and_(u"创建Product", name=constants.DEFAULT_PRODUCT_NAME, product_type=product_type_default) group = and_(u'创建Group(cargo_clerk)', name='cargo_clerk', default_url='/cargo/unload-session-list') and_(u"创建User", username="******", password="******", groups=[group]) customer = and_(u"创建Customer", name=generate(5), abbr=generate(2)) department = and_(u"创建Department", name=generate(5)) harbor = and_(u"创建Harbor", name=generate(5), department=department) with Scenario(u"最简单流程"): gr = given(u"收货单", customer, harbor) order = and_(u"生成订单", gr, order_type=constants.STANDARD_ORDER_TYPE) when(u"完善订单", order) status_code = and_(u"下发订单", order) then(u"操作成功", status_code)
def test(): flask_sqlalchemy_setup(app, db, create_step_prefix=u"创建", model_name_getter=lambda model: model.__name__, attr_name_getter=lambda model, attr: model.__col_desc__.get(attr, attr), set_step_pattern=u'(\w+)([\.\w+]+)设置为(.+)') with Feature(u"订单测试",step_files=["lite_mms.test.at.steps.order"]): with Scenario(u"准备数据"): plate = given(u"创建Plate", name=generate(5)) product_type_default = and_(u"创建ProductType", name=constants.DEFAULT_PRODUCT_TYPE_NAME) product_default = and_(u"创建Product", name=constants.DEFAULT_PRODUCT_NAME, product_type=product_type_default) group = and_(u'创建Group(cargo_clerk)', name='cargo_clerk', default_url='/cargo/unload-session-list') and_(u"创建User", username="******", password="******", groups=[group]) customer = and_(u"创建Customer", name=generate(5), abbr=generate(2)) department = and_(u"创建Department", name=generate(5)) harbor = and_(u"创建Harbor", name=generate(5), department=department) with Scenario(u"最简单流程"): gr = given(u"收货单", customer, harbor) order = and_(u"生成订单", gr, order_type=constants.STANDARD_ORDER_TYPE) when(u"完善订单", order) status_code = and_(u"下发订单", order) then(u"操作成功", status_code)
def test_it_works(): init() with Feature(u"测试data_set的filter", ['flask.ext.report.test.tests.steps.data_set_step']): with Scenario(u"加载data_set"): browser = when(u"打开dataset", id_=1) then(u"配置shown的filter展示", browser) with Scenario(u"删除data_set的filter"): browser = when(u"打开dataset", id_=1) then(u"删除filter", browser) with Scenario(u"删除data_set的filter"): browser = when(u"打开dataset", id_=1) then(u"添加filter", browser)
def test(): @before_each_feature def setup(feature): app.config['CODERNITY_DATABASE_PATH'] = mkdtemp() global patcher patcher = mock.patch.dict(litefac.database.__dict__, { "codernity_db": Database(app.config['CODERNITY_DATABASE_PATH']) }) patcher.start() litefac.database.codernity_db.create() @after_each_feature def teardown(feature): litefac.database.codernity_db.close() shutil.rmtree(app.config['CODERNITY_DATABASE_PATH']) patcher.stop() flask_sqlalchemy_setup(app, db, create_step_prefix=u"创建", model_name_getter=lambda model: model.__name__, attr_name_getter=lambda model, attr: model.__col_desc__.get(attr, attr), set_step_pattern=u'(\w+)([\.\w+]+)设置为(.+)') with Feature(u"发货会话测试", step_files=["litefac.test.at.steps.delivery"]): with Scenario(u"准备数据"): plate = given(u"创建Plate", name=generate(5)) product_type_default = and_(u"创建ProductType", name=constants.DEFAULT_PRODUCT_TYPE_NAME) product_default = and_(u"创建Product", name=constants.DEFAULT_PRODUCT_NAME, product_type=product_type_default) group_cc = and_(u'创建Group(cargo_clerk)', name='cargo_clerk', id=constants.groups.CARGO_CLERK, default_url='/cargo/unload-session-list') and_(u"创建User", username="******", password=md5("cc").hexdigest(), groups=[group_cc]) group_loader = and_(u'创建Group(loader)', name='loader', id=constants.groups.LOADER) and_(u"创建User", username="******", password=md5("l").hexdigest(), groups=[group_loader]) customer = and_(u"创建Customer", name=generate(5), abbr=generate(2)) department = and_(u"创建Department", name=generate(5)) harbor = and_(u"创建Harbor", name=generate(5), department=department) store_bill1 = and_(u"生成StoreBill", customer, harbor=harbor) store_bill2 = and_(u"生成StoreBill", customer, harbor=harbor) with Scenario(u"创建发货会话,并生成发货单"): delivery_session = when(u"收发员创建发货会话", plate=plate, tare=1500) then(u"收发员选择仓单", delivery_session, [store_bill1, store_bill2]) and_(u"装卸工全部装货、完全装货", delivery_session, store_bill1) consignment = and_(u"收发员生成发货单", delivery_session) then(u"发货单产品与仓单相同", consignment, store_bill1) with Scenario(u"修改发货会话"): delivery_session = given(u"已关闭的发货会话", plate, tare=1000) status_code = when(u"修改发货会话", delivery_session) then(u"无法修改", status_code) when(u"重新打开发货会话", delivery_session) status_code = and_(u"修改发货会话", delivery_session) then(u"修改成功", status_code) with Scenario(u"修改发货任务"): delivery_session = given(u"已关闭的发货会话", plate, tare=1000) delivery_task = and_(u"发货任务", delivery_session) status_code = when(u"修改发货任务", delivery_task) then(u"无法修改", status_code) when(u"重新打开发货会话", delivery_session) status_code = and_(u"修改发货任务", delivery_task) then(u"修改成功", status_code) with Scenario(u"修改发货单"): consignment = given(u"未打印的发货单", customer, delivery_session, store_bill1.sub_order.product) status_code = when(u"修改发货单的产品", consignment) then(u"修改成功", status_code) when(u"打印发货单", consignment) status_code = and_(u"修改发货单的产品", consignment) then(u"无法修改", status_code) with Scenario(u"对已生成发货单的发货会话,新增发货任务"): delivery_session = given(u"已生成发货单的发货会话", plate, 1000, customer, store_bill1.sub_order.product) then(u"重新打开发货会话", delivery_session) when(u"新增发货任务", delivery_session, store_bill2) then(u"提示需要重新生成发货单", delivery_session) with Feature(u"剩余重量异常", step_files=["litefac.test.at.steps.delivery"]): with Scenario(u'数据准备'): plate = given(u"创建Plate", name=generate(5)) product_type_default = and_(u"创建ProductType", name=constants.DEFAULT_PRODUCT_TYPE_NAME) product_default = and_(u"创建Product", name=constants.DEFAULT_PRODUCT_NAME, product_type=product_type_default) group_cc = and_(u'创建Group(cargo_clerk)', name='cargo_clerk', id=constants.groups.CARGO_CLERK, default_url='/cargo/unload-session-list') and_(u"创建User", username="******", password=md5("cc").hexdigest(), groups=[group_cc]) group_loader = and_(u'创建Group(loader)', name='loader', id=constants.groups.LOADER) and_(u"创建User", username="******", password=md5("l").hexdigest(), groups=[group_loader]) customer = and_(u"创建Customer", name=generate(5), abbr=generate(2)) department = and_(u"创建Department", name=generate(5)) harbor = and_(u"创建Harbor", name=generate(5), department=department) store_bill1 = and_(u"生成StoreBill", customer, harbor=harbor, weight=2000) store_bill2 = and_(u"生成StoreBill", customer, harbor=harbor, weight=1000) with Scenario(u'最简情况'): delivery_session = when(u"收发员创建发货会话", plate=plate, tare=1500) then(u"收发员选择仓单", delivery_session, [store_bill1, store_bill2]) and_(u'创建发货任务, 包含两个仓单, 其中一个未完成, 剩余重量超过了原有仓单的重量', delivery_session, store_bill1, store_bill2) node_id = then(u'一个异常发货任务申请生成了', yawf.WorkFlowEngine.instance.db) then(u'不能再次创建发货任务,包含两个仓单,全部都完成', delivery_session, store_bill1, store_bill2) when(u'批准该申请', node_id) then(u'发货任务生成了, 存在一个未发货的仓单, 剩余重量是1001, 另外由两个仓单已经发货完毕, 其重量分别是2000, 1', delivery_session, store_bill1.id, store_bill2.id) clear_hooks()
def test(): flask_sqlalchemy_setup( app, db, create_step_prefix=u"创建", model_name_getter=lambda model: model.__name__, attr_name_getter=lambda model, attr: model.__col_desc__.get(attr, attr), set_step_pattern=u'(\w+)([\.\w+]+)设置为(.+)') with Feature(u'工单测试', step_files=['lite_mms.test.at.steps.manufacture']): with Scenario(u'准备数据'): cargo_clerk_group = and_(u'创建Group(cargo_clerk)', id=lite_mms.constants.groups.CARGO_CLERK) cargo_clerk = and_(u'创建User', username='******', password=md5('cc').hexdigest(), groups=[cargo_clerk_group]) scheduler_group = and_(u'创建Group(scheduler)', id=lite_mms.constants.groups.SCHEDULER) and_(u'创建User', username='******', password=md5('s').hexdigest(), groups=[scheduler_group]) customer = and_(u'创建Customer', name='foo', abbr='foo') plate = and_(u'创建Plate', name='foo') unload_session = and_(u'创建UnloadSession', plate_=plate, gross_weight=5000) goods_receipt = and_(u'创建GoodsReceipt', customer=customer, unload_session=unload_session, creator=cargo_clerk) order = and_(u'创建Order', goods_receipt=goods_receipt, creator=cargo_clerk) product_type = and_(u'创建ProductType', name='foo') product = and_(u'创建Product', name='foo', product_type=product_type) harbor = and_(u'创建Harbor', name='foo') sub_order = and_(u'创建SubOrder', product=product, weight=100, harbor=harbor, order=order, quantity=100, unit='KG') department_leader_group = and_(u'创建Group(department_leader)', id=groups_const.DEPARTMENT_LEADER) department_leader = and_(u'创建User', username='******', password=md5('dl').hexdigest(), groups=[department_leader_group]) department = and_(u'创建Department', name='foo', leader_list=[department_leader], harbor_list=[harbor]) team_leader_group = and_(u'创建Group(team_leader)', id=groups_const.TEAM_LEADER) team_leader = and_(u'创建User', username='******', password=md5('tl').hexdigest(), groups=[team_leader_group]) team = and_(u'创建Team', name='foo', department=department, leader_list=[team_leader]) quality_inspector_group = and_(u'创建Group(quality_inspector)', id=groups_const.QUALITY_INSPECTOR) and_(u'创建User', username='******', password=md5('qi').hexdigest(), groups=[quality_inspector_group]) with Scenario(u'最简流程'): when(u'调度员对子订单进行预排产60公斤', sub_order) wc = then(u'一条重量是60公斤的工单生成了', sub_order) and_(u'原子订单的剩余重量是40公斤', sub_order) when(u'调度员将工单排产给车间', wc, department) then(u'车间主任将看到工单', wc, department) then(u'车间主任将工单分配到班组', wc, department, team) then(u'班组长将看到工单', wc, team) when(u'班组长增加重量20公斤', wc) when(u'班组长增加重量30公斤', wc) when(u'班组长增加重量50公斤, 并且结束', wc) and_(u'工单的工序后重量是100公斤', wc) then(u'质检员可以看到工单', wc, team) qir = when(u'质检员全部通过该工单', wc) then(u'该工单已经结束', wc) and_(u'一条对应的仓单生成了', qir, harbor) with Scenario(u'临时保存质检报告'): when(u'调度员对子订单进行预排产40公斤', sub_order) wc = then(u'一条重量是40公斤的工单生成了', sub_order) and_(u'调度员将工单排产给车间', wc, department) and_(u'车间主任将工单分配到班组', wc, department, team) and_(u'班组长增加重量40公斤, 并且结束', wc) qir_list = when(u'质检员保存质检结果', wc) then(u'工单的质检报告列表正确保存了', wc, qir_list) clear_hooks()
def test_cargo(): from pyfeature import flask_sqlalchemy_setup flask_sqlalchemy_setup(app, db, create_step_prefix=u"创建", model_name_getter=lambda model: model.__name__, attr_name_getter=lambda model, attr: model.__col_desc__.get(attr, attr), set_step_pattern=u'(\w+)([\.\w+]+)设置为(.+)') with Feature(u"卸货会话生成收货单", ['lite_mms.test.at.steps.cargo'], verbose=False): with Scenario(u"准备数据"): plate = given(u"创建Plate(浙B 11112)") harbor = and_(u"创建Harbor(foo车间)") customer = and_(u"创建Customer(宁波机床厂)", abbr="aaa") customer2 = and_(u"创建Customer(宁力紧固件)", abbr="bbb") dpt = and_(u"创建ProductType(默认加工件)") and_(u"创建Product(默认加工件)", product_type=dpt) product_type = and_(u"创建ProductType(foo)") product = and_(u"创建Product(foo)", product_type=product_type) cargo_clerk_group = and_(u'创建Group(cargo_clerk)', id=lite_mms.constants.groups.CARGO_CLERK, default_url='/cargo/unload-session-list') and_(u"创建User", username="******", password=md5("cc").hexdigest(), groups=[cargo_clerk_group]) loader_group = and_(u'创建Group(loader)', id=lite_mms.constants.groups.LOADER) and_(u'创建User', username="******", password=md5("l").hexdigest(), groups=[loader_group]) with Scenario(u"最简完整流程"): us = when(u'收发员创建UnloadSession, 毛重是10000公斤', plate) ut = and_(u'装卸工进行卸货,该货物来自宁波机床厂', customer, harbor, product, us, is_last=True) and_(u'收发员称重8000公斤', ut) then(u"卸货任务的重量是2000公斤", ut) and_(u'卸货会话已经关闭', us) gr_list = when(u'收发员生成收货单', us) then(u'该收货单中包含一个项目,该项目的客户是宁波机床厂, 项目的重量是2000公斤', gr_list) with Scenario(u"包含多次卸货任务的卸货会话"): us = when(u'收发员创建UnloadSession, 毛重是10000公斤', plate) ut1 = and_(u'装卸工进行卸货,该货物来自宁波机床厂', customer, harbor, product, us, is_last=False) then(u'装卸工此时不能进行卸货', us) when(u'收发员称重8000公斤', ut1) then(u"卸货任务的重量是2000公斤", ut1) and_(u'卸货会话没有关闭', us) ut2 = when(u'装卸工进行卸货,该货物来自宁力紧固件', customer2, harbor, product, us, is_last=True) and_(u'收发员称重5000公斤', ut2) then(u'卸货任务的重量是3000公斤', ut2) and_(u"卸货会话已经关闭", us) gr_list = when(u'收发员生成收货单', us) then(u'该会话中包含两个项目', gr_list) and_(u'项目的客户是宁波机床厂, 项目的重量是2000公斤', gr_list[0]) and_(u'项目的客户是宁力紧固件, 项目的重量是3000公斤', gr_list[1]) with Scenario(u'除非卸货会话关闭,否则卸货会话都可以修改'): us = when(u'收发员创建卸货会话, 其状态是待称重') ut = and_(u'装卸工创建卸货任务', customer, harbor, product, us) and_(u'修改卸货会话的车牌号为浙B 00002', us) and_(u'修改卸货会话的毛重为10000公斤', us) then(u'卸货会话的车牌号为浙B 00002', us) and_(u'卸货会话的重量为10000公斤', us) and_(u'修改卸货任务的重量为2000公斤', ut) then(u'卸货任务的重量是2000公斤', ut) when(u'关闭卸货会话',us) then(u'不能修改卸货会话',us) and_(u'不能修改卸货任务',ut) with Scenario(u'收发员删除卸货任务'): us = given(u"未关闭的卸货会话") ut1 = and_(u"已称重的卸货任务", us, customer, harbor, product) ut2 = and_(u"未称重的卸货任务", us, customer, harbor, product) rv = when(u"删除卸货任务", ut1) then(u"无法删除", rv) rv = when(u"删除卸货任务", ut2) then(u"删除成功", rv) with Scenario(u'收发员强行关闭卸货会话'): us = given(u"未称重未关闭的卸货会话", customer, harbor, product) rv = when(u"收发员关闭卸货会话", us) then(u"关闭失败", rv) when(u"收发员称重卸货会话", us) rv = and_(u"收发员关闭卸货会话", us) then(u"关闭成功", rv) with Scenario(u'收发员创建卸货会话时,不能选择正在装货或者卸货的车辆'): plate_a = given(u"正在装货的车辆", plate_name="Ijkdplate_a") plate_list = when(u"收发员创建新卸货会话") then(u"车辆列表中无上述车辆", plate_a, plate_list) with Scenario(u'收发员打开关闭的卸货会话,并且修改'): us = given(u"卸货会话已关闭,未生成收货单", customer, harbor,plate, product) when(u"收发员重新打开卸货会话", us) then(u"收发员修改其卸货任务的重量为5000KG", us) and_(u"收发员关闭卸货会话", us) gr = then(u"生成收货单。其产品重量为5000KG", us) when(u"收发员重新打开卸货会话", us) and_(u"收发员修改其卸货任务的重量为6000KG", us) then(u"收货单未过时", gr) when(u"又新增一卸货任务", us) then(u"收货单过时", gr) with Scenario(u'若收货单过时,或者已经生成了订单,那么不能修改收货单'): us = given(u"卸货会话已关闭,未生成收货单", customer, harbor,plate, product) gr_list = and_(u'收发员生成收货单', us) when(u"收发员重新打开卸货会话", us) and_(u'又新增一卸货任务',us) then(u'收货单过时', gr_list[0]) and_(u'不能修改收货单', gr_list[0]) gr_list = when(u'重新生成收货单', us) and_(u'生成订单',gr_list[0]) then(u'不能修改收货单',gr_list[0]) clear_hooks()
def test(): @before_each_feature def setup(feature): app.config['CODERNITY_DATABASE_PATH'] = mkdtemp() global patcher patcher = mock.patch.dict(lite_mms.database.__dict__, { "codernity_db": Database(app.config['CODERNITY_DATABASE_PATH']) }) patcher.start() lite_mms.database.codernity_db.create() @after_each_feature def teardown(feature): lite_mms.database.codernity_db.close() shutil.rmtree(app.config['CODERNITY_DATABASE_PATH']) patcher.stop() flask_sqlalchemy_setup(app, db, create_step_prefix=u"创建", model_name_getter=lambda model: model.__name__, attr_name_getter=lambda model, attr: model.__col_desc__.get(attr, attr), set_step_pattern=u'(\w+)([\.\w+]+)设置为(.+)') with Feature(u"发货会话测试", step_files=["lite_mms.test.at.steps.delivery"]): with Scenario(u"准备数据"): plate = given(u"创建Plate", name=generate(5)) product_type_default = and_(u"创建ProductType", name=constants.DEFAULT_PRODUCT_TYPE_NAME) product_default = and_(u"创建Product", name=constants.DEFAULT_PRODUCT_NAME, product_type=product_type_default) group_cc = and_(u'创建Group(cargo_clerk)', name='cargo_clerk', id=constants.groups.CARGO_CLERK, default_url='/cargo/unload-session-list') and_(u"创建User", username="******", password=md5("cc").hexdigest(), groups=[group_cc]) group_loader = and_(u'创建Group(loader)', name='loader', id=constants.groups.LOADER) and_(u"创建User", username="******", password=md5("l").hexdigest(), groups=[group_loader]) customer = and_(u"创建Customer", name=generate(5), abbr=generate(2)) department = and_(u"创建Department", name=generate(5)) harbor = and_(u"创建Harbor", name=generate(5), department=department) store_bill1 = and_(u"生成StoreBill", customer, harbor=harbor) store_bill2 = and_(u"生成StoreBill", customer, harbor=harbor) with Scenario(u"创建发货会话,并生成发货单"): delivery_session = when(u"收发员创建发货会话", plate=plate, tare=1500) then(u"收发员选择仓单", delivery_session, [store_bill1, store_bill2]) and_(u"装卸工全部装货、完全装货", delivery_session, store_bill1) consignment = and_(u"收发员生成发货单", delivery_session) then(u"发货单产品与仓单相同", consignment, store_bill1) with Scenario(u"修改发货会话"): delivery_session = given(u"已关闭的发货会话", plate, tare=1000) status_code = when(u"修改发货会话", delivery_session) then(u"无法修改", status_code) when(u"重新打开发货会话", delivery_session) status_code = and_(u"修改发货会话", delivery_session) then(u"修改成功", status_code) with Scenario(u"修改发货任务"): delivery_session = given(u"已关闭的发货会话", plate, tare=1000) delivery_task = and_(u"发货任务", delivery_session) status_code = when(u"修改发货任务", delivery_task) then(u"无法修改", status_code) when(u"重新打开发货会话", delivery_session) status_code = and_(u"修改发货任务", delivery_task) then(u"修改成功", status_code) with Scenario(u"修改发货单"): consignment = given(u"未打印的发货单", customer, delivery_session, store_bill1.sub_order.product) status_code = when(u"修改发货单的产品", consignment) then(u"修改成功", status_code) when(u"打印发货单", consignment) status_code = and_(u"修改发货单的产品", consignment) then(u"无法修改", status_code) with Scenario(u"对已生成发货单的发货会话,新增发货任务"): delivery_session = given(u"已生成发货单的发货会话", plate, 1000, customer, store_bill1.sub_order.product) then(u"重新打开发货会话", delivery_session) when(u"新增发货任务", delivery_session, store_bill2) then(u"提示需要重新生成发货单", delivery_session) with Feature(u"剩余重量异常", step_files=["lite_mms.test.at.steps.delivery"]): with Scenario(u'数据准备'): plate = given(u"创建Plate", name=generate(5)) product_type_default = and_(u"创建ProductType", name=constants.DEFAULT_PRODUCT_TYPE_NAME) product_default = and_(u"创建Product", name=constants.DEFAULT_PRODUCT_NAME, product_type=product_type_default) group_cc = and_(u'创建Group(cargo_clerk)', name='cargo_clerk', id=constants.groups.CARGO_CLERK, default_url='/cargo/unload-session-list') and_(u"创建User", username="******", password=md5("cc").hexdigest(), groups=[group_cc]) group_loader = and_(u'创建Group(loader)', name='loader', id=constants.groups.LOADER) and_(u"创建User", username="******", password=md5("l").hexdigest(), groups=[group_loader]) customer = and_(u"创建Customer", name=generate(5), abbr=generate(2)) department = and_(u"创建Department", name=generate(5)) harbor = and_(u"创建Harbor", name=generate(5), department=department) store_bill1 = and_(u"生成StoreBill", customer, harbor=harbor, weight=2000) store_bill2 = and_(u"生成StoreBill", customer, harbor=harbor, weight=1000) with Scenario(u'最简情况'): delivery_session = when(u"收发员创建发货会话", plate=plate, tare=1500) then(u"收发员选择仓单", delivery_session, [store_bill1, store_bill2]) and_(u'创建发货任务, 包含两个仓单, 其中一个未完成, 剩余重量超过了原有仓单的重量', delivery_session, store_bill1, store_bill2) node_id = then(u'一个异常发货任务申请生成了', yawf.WorkFlowEngine.instance.db) then(u'不能再次创建发货任务,包含两个仓单,全部都完成', delivery_session, store_bill1, store_bill2) when(u'批准该申请', node_id) then(u'发货任务生成了, 存在一个未发货的仓单, 剩余重量是1001, 另外由两个仓单已经发货完毕, 其重量分别是2000, 1', delivery_session, store_bill1.id, store_bill2.id) clear_hooks()