Robotframework将从python类传递的变量视为'无'

时间:2018-02-01 10:49:45

标签: python robotframework

我有一个python类 Wiresharking.py

from subprocess import Popen, CREATE_NEW_CONSOLE,PIPE,STDOUT
import time
import subprocess
import datetime
import os
#import envSI

class Wiresharking:

        """Wireshark Server subclass"""

        def __init__(self,**kwargs):

                self.filters=''
                self.window_ip = kwargs.get('ip')
                print type(self.window_ip)
                self.window_user= kwargs.get('username')
                self.window_password= kwargs.get('password')
                self.dest_path= kwargs.get('Target_path')
                self.interface= kwargs.get('interface')
                self.terminal='cmd'
                self.home=kwargs.get('Home_path')


        def test(self):
            print 'hi'
            return self.window_ip

我可以从另一个python文件( env.py )中调用它,如下所示

SERVER_01 = Wiresharking(
        name='WIRESHARK_ENV91',
        ip='192.168.1.16',
        username=r'INTRA\pmmm',   #always prepend r , before giving your username and password
        password='jan@2018',
        prompt='$ ',
        autostart=False,
        unzip_capture=True,
        filter='',
        #interface=['ens2f0'],
        interface='Ethernet',
        Target_path=r'D:\Users\pankaj-m\Desktop\Test'
        )

print SERVER_01.test()

输出:

<type 'str'>
hi
192.168.1.16

然而,当我将 env.py 文件用作带有robotframework的变量文件

时会出现问题

命令

pybot -V env.py Check.robot

Check.robot 文件位于

之下
*** Settings ***
Library    Wiresharking.py
*** Test Cases ***
Test
    check
*** Keywords ***
check
    ${abc} =    test
    log    ${abc}

此处获得的输出是&#39;无&#39;

16:13:37.279 INFO None 

任何人都可以指出我在这里做错了什么。

2 个答案:

答案 0 :(得分:2)

您的env.py定义了一个名为${SERVER_01}的变量。但是,Check.robot从不使用该变量。

Check.robot导入Wiresharking.py而不传递任何参数。这导致其self.window_ipNone,因此关键字返回None

如果您想查看env.py中的值,则需要查看${SERVER_01}变量。例如:

log  ${SERVER_01.window_ip}

答案 1 :(得分:0)

这是我能够通过** kwargs并能够解决错误的方式。

我仍在寻找一种更清洁的方式来传递** kwargs

*** Settings ***
Library    Wiresharking.py   ip=${SERVER_01.window_ip}    username=${SERVER_01.window_user}    password=${SERVER_01.window_password}    Target_path=${SERVER_01.dest_path}    interface=${SERVER_01.interface}    Home_path=${SERVER_01.home}  WITH NAME    Mylib

*** Variables ***
${window_ip }
#&{names} =  Create Dictionary   0=First Name    2=Email
*** Test Cases ***
Test
    check
*** Keywords ***
check
    ${abc} =    test
    log    ${abc}

输出

INFO 192.168.1.16