我遇到了在装饰器中创建的对象的可用性问题,并且在test_case
方法中需要。我的代码如下:
def execute_results_navigation(test_case):
def wrapper(self,*args,**kwargs):
result=Result()
pagination=Pagination()
results_page_index=1
while results_page_index<=pagination.get_pages_number():
for results_object_index in range(results.get_objects_number_per_single_page()):
test_case(self,*args,**kwargs)
pagination.set_active_page_number(results_page_index)
results_page_index+=1
return wrapper
代替test_case
方法“注入”以下代码(所有内容都使用预定义的装饰器进行):
@execute_results_navigation
def test_check_availability_of_search_results(self):
"""
test case 2.22
"""
offer=Offer()
result.select_hotel(results_caller["button"],results_object_index)
offer_price=offer.get_offer_object_details().price
offer.verify_offer_availability(offer_price)
offer.back_to_search_results()
test_case
方法无法访问result
,pagination
个对象和results_object_index
变量。调用装饰器时已初始化所有对象。也许我对这个方法做错了,但我认为这些实例存在于wrapper
方法中,对它们的访问不应该导致问题。
答案 0 :(得分:3)
您将无法访问test_case中包装器中定义的局部变量。
看起来test_check_availability_of_search_results是一个实例方法,因此解决问题的一种方法是将这些变量分配给'self'属性。