我有一个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
任何人都可以指出我在这里做错了什么。
答案 0 :(得分:2)
您的env.py
定义了一个名为${SERVER_01}
的变量。但是,Check.robot
从不使用该变量。
Check.robot
导入Wiresharking.py
而不传递任何参数。这导致其self.window_ip
为None
,因此关键字返回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