2013-05-14 23 views
6

Trong hướng dẫn sử dụng Robot Khung có một phần mô tả cách chuyển các tệp biến và cũng có thể một số biến có thể nếu cần.
Ví dụ:
pybot --variablefile taking_arguments.py:arg1:arg2
Làm thế nào để sử dụng thêm đối số được truyền với tệp Biến - Khung robot

Câu hỏi của tôi là tôi có thể sử dụng các biến thể arg1 và arg2 trong file taking_arguments.py sau đó và nếu tôi có thể thì làm sao?

Ngay bây giờ tôi có điều này:

pybot --variablefile taking_arguments.py:arg1:arg2

taking_arguments.py nội dung:

IP_PREFIX = arg1

Nhưng mà kết quả trong

NameError: name 'arg1' is not defined

Trả lời

5

Cách duy nhất để sử dụng các biến trong tệp đối số bằng cách sử dụng cú pháp --variablefile filename.py:arg1:arg2 là để tệp biến của bạn triển khai hàm get_variables. Hàm này sẽ được chuyển qua các đối số mà bạn chỉ định trên dòng lệnh và phải trả về một từ điển các tên và giá trị biến.

Ví dụ, hãy xem xét các tập tin sau đây biến, có tên là "variables.py":

def get_variables(arg1, arg2): 
    variables = {"argument 1": arg1, 
       "argument 2": arg2, 
       } 
    return variables 

Tập tin này tạo ra hai biến robot, được đặt tên ${argument 1}${argument 2}. Các giá trị cho các biến này sẽ là các giá trị của các đối số được truyền vào. Bạn có thể sử dụng tệp biến này như sau:

pybot --variablefile variables.py:one:two ... 

Trong trường hợp này, các chuỗi "một" và "hai" sẽ được chuyển đến get_variables làm hai đối số. Sau đó, các liên kết này sẽ được kết hợp với hai biến, dẫn đến ${argument 1} được đặt thành one${argument 2} được đặt thành two.

+0

Đã nhận '' 'TypeError: get_variables() lấy chính xác 2 đối số (0 đã cho)' '' khi tôi thử ví dụ trên. Đây là thiết lập của tôi: một tệp robot có '' 'trình duyệt mở''' và hai đối số này' '' $ {argument 1} '' 'và' '' $ {argument 2} '' 'Tôi cũng đang gọi. py tập tin trong '' 'Settings''' thực hiện dòng lệnh của tôi trông giống như này' '' pybot -v variables.py:username:password file.robot''' Tôi đang cố gắng chuyển tên người dùng và mật khẩu vào một biểu mẫu thông qua dòng lệnh bằng cách sử dụng phương pháp này, nhưng không may mắn. – Freddy

+1

@Freddy Bạn có thể đã sử dụng sai đối số. Bạn nên sử dụng chữ thường '-v' để xác định biến duy nhất. Đối với tệp biến, sử dụng chữ hoa '-V' hoặc' --variablefile' –

+0

@ sjudǝʊ Cảm ơn bạn đã làm rõ điều này. Trong thực tế, tôi đã vượt qua cờ sai. Sử dụng '' '-V''' làm việc như mong đợi. Tôi vẫn nhận được lỗi sau đây '' 'Lỗi trong tệp '.../_ robot/file.robot': Xử lý tệp biến '.../_ robot/variables.py' không thành công: TypeError: get_variables() lấy chính xác 2 đối số (0 đã cho) '' 'trong nhật ký, tuy nhiên, quá trình đã hoạt động. Không chắc chắn nếu lỗi từ các bản ghi chỉ là một cái gì đó mà RF có vấn đề xử lý. – Freddy

2

Tôi đã không cố gắng để vượt qua giá trị ban đầu cho các biến trong một tập tin biến ... Vì vậy, tôi không chắc chắn nếu điều này là một cái gì đó có thể ...

tôi có thể cung cấp một sự thay thế ...

Bạn có thể xác định bằng tay một số biến với các giá trị của họ tại lệnh pybot ...

pybot -variablefile taking_arguments.py -v IP_PREFIX:arg1 -v Varibale:Value 

Nếu tôi không nhầm các biến bằng tay bắt đầu có một ưu tiên cao hơn những trong file biến. Vì vậy, ngay cả khi chúng được khởi tạo trong tệp biến, các giá trị được truyền với tùy chọn -v sẽ được sử dụng trong testcase.

Hy vọng điều này có thể giúp bạn!

Các vấn đề liên quan