小编Lor*_*ist的帖子

Robot Framework获取当前测试用例的名称

我有一组按测试用例分类的测试数据,我希望有一个测试设置关键字来加载每个测试用例的数据.像这样的东西会起作用:

*** Keywords ***
Load Test Data
    [Arguments]  ${test case name}
    ${data}=  Get File  ${test case name}.txt
    Set Test Variable  ${data}  ${data}

*** Testcases ***
First Test
    Load Test Data  First Test
    Log  ${data}

Second Test
    Load Test Data  Second Test
    Log  ${data}
Run Code Online (Sandbox Code Playgroud)

但是,不必在每个测试用例的开头包含"负载测试数据"关键字.是否有一个关键字可以获取测试用例的名称,所以我可以在"加载测试用例"中调用它并使其成为测试设置关键字,就像这样?

*** Settings ***
Test Setup  Load Test Data

*** Keywords ***
Load Test Data
    ${test case name}=  Get Test Case Name
    ${data}=  Get File  ${test case name}.txt
    Set Test Variable  ${data}  ${data}

*** Testcases ***
First …
Run Code Online (Sandbox Code Playgroud)

robotframework

11
推荐指数
3
解决办法
2万
查看次数

与引用相关的Perl语法

考虑x是数组引用.

我知道这[]给出了一个匿名数组引用并{}给出了一个匿名哈希引用.现在@{$x}意味着什么?

perl

4
推荐指数
2
解决办法
200
查看次数

安装XML :: Parser需要expat.h

我正在开发一个项目,需要将所有第三方(读取:CPAN)perl模块安装在perforce存储库中,这样任何依赖于它们的代码都可以成功运行,而无需其他人手动安装它们.我在尝试安装XML :: Parser时遇到了一个问题.我使用cpanminus来安装我的CPAN模块,所以我cpanm -L . XML::Parser在所需的目录中运行(之前已经使用过其他模块)并得到错误:

Expat.xs:12:19: error: expat.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我习惯使用Ubuntu和apt-get,但在工作中我必须使用RedHat,我不知道如何将expat安装到本地目录.我跑了yum search expat,得到了

expat.i386 : A library for parsing XML.
expat.x86_64 : A library for parsing XML.
Run Code Online (Sandbox Code Playgroud)

所以我尝试yum install --installroot=. expat.i386了以下错误:

Loaded plugins: rhnplugin, security
error: cannot open Packages index using db3 - No such file or directory (2)
error: cannot open Packages database in ./var/lib/rpm
Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File …
Run Code Online (Sandbox Code Playgroud)

perl cpan perl-module yum

4
推荐指数
1
解决办法
2万
查看次数

强制本地安装的模块使用本地安装的依赖项

我正在开发一个项目,需要将所有第三方(读取:CPAN)perl模块安装在perforce存储库中,这样任何依赖于它们的代码都可以成功运行,而无需其他人手动安装它们.我使用cpanminus来安装我的CPAN模块,所以我cpanm -L . Moose在所需的目录中运行,并且所有内容都安装成功.但是,当我尝试编译我用Moose制作的模块时,我有时会收到此错误:

Undefined subroutine &Carp::longmess_heavy called at /usr/lib/perl5/5.8.8/Carp.pm line 235.
Run Code Online (Sandbox Code Playgroud)

看起来,即使Carp与Moose一起安装到我的本地目录中,它也在使用(过时的)版本/user/lib/perl5/5.8.8.我可以在我的机器上升级Carp,但是一旦我将我的代码检查到存储库中,其他人使用过时的Carps就会遇到同样的问题.那么我如何强迫Moose使用本地安装的Carp,而不是那个/usr/lib/perl5/5.8.8

perl dependencies cpan perl-module dependency-management

2
推荐指数
1
解决办法
1051
查看次数

使用lib作为相对于模块的路径

我有问题找出相对路径use lib.这是我想要做的一个例子:

我有一个目录调用foo,其中包含一个名为的脚本myscript.pl. myscript.pl使用一个名为Mod1.pm位于被调用的子目录中的模块bar,所以在myscript.pl我的顶部放行:

    use lib 'bar';
    use Mod1;
Run Code Online (Sandbox Code Playgroud)

这很好,直到我想Mod1.pm使用另一个模块,foo/bar/asdf/Mod2.pm.如果我把它use lib 'asdf'放在顶部Mod1.pm将无法工作,因为它相对于我正在运行的目录进行搜索myscript.pl.所以我做了一些搜索并找到了FindBin,并尝试将这些行添加到Mod1.pm:

    use FindBin;
    use lib "$FindBin::Bin/asdf";
Run Code Online (Sandbox Code Playgroud)

这也不起作用,因为FindBin找到我正在运行的脚本(myscript.pl)所在的目录,而不是使用的文件FindBin(在这种情况下Mod1.pm).所以我的问题是,有没有办法搜索相对于所在Mod1.pm的位置,以便Mod2.pm无论使用的脚本Mod1.pm位于何处都可以找到它?

编辑:进一步解释我的情况,以解决你的一些意见:

我正在处理存储库中的代码,并且所有CPAN库都需要安装在存储库中的目录中.这意味着use libs不能有任何绝对路径.对于我的项目,有一个中央模块"Mod1.pm",它有use很多CPAN模块,它们位于存储库的各个目录中.所有use lib语句都是use lib '../../foo/bar/asdf'这样的形式,以便可以找到它们相对于运行脚本的位置,但是这限制了您可以运行使用Mod1.pm的脚本的位置,我试图避免使用它.另一个令人讨厌的副作用是我不能只perl -c Mod1.pm确保我对Mod1.pm所做的任何编辑是理智的,除非我在正确的位置运行它,这很方便不是Mod1.pm的位置.哦加入一个已经有凌乱代码的项目的乐趣...另一个令人讨厌的副作用是我不能使用任何你建议修复我的问题的任何CPAN模块,因为我还需要一种方法找到那些.

perl perl-module

1
推荐指数
2
解决办法
445
查看次数

获取二叉搜索树中的节点数

所以我正在研究一种方法,它可以获得二进制搜索树中的节点数量,当我有3个节点时,它给了我3个,但如果我做了5个它给了我4个,我需要更改什么?

int BinaryTree::size(int count, Node *leaf) const
{
    if(leaf != NULL)//if we are not at a leaf
    {
        size(count + 1, leaf->getLeft());//recurisvly call the function and increment the count
        size(count + 1, leaf->getRight());
    }
    else
    {
        return count;//return the count
    }

}
Run Code Online (Sandbox Code Playgroud)

c++ tree nodes

1
推荐指数
1
解决办法
3万
查看次数

将标准错误发送到管道

我正在尝试编写一个简单的脚本,该脚本采用标准输出和标准错误,并将该单词放在STDERR:标准错误每行的开头。为了进行测试,我有一个简单的脚本,它在标准输出和标准错误之间交替输出几行:

#!/usr/bin/perl
print "OUT 1\n";
print STDERR "ERR 1\n";
print "OUT 2\n";
print STDERR "ERR 2\n";
Run Code Online (Sandbox Code Playgroud)

当我运行它时:

lorkenpeist$ ./testscript.pl
OUT 1
ERR 1
OUT 2
ERR 2
Run Code Online (Sandbox Code Playgroud)

这是我stderr.awk要添加的脚本STDERR:

#!/bin/awk -f
{print "STDERR: " $0}
Run Code Online (Sandbox Code Playgroud)

如果我运行./testscript.pl | ./stderr.awk(这显然是错误的,因为我正在输出标准而不是标准错误):

lorkenpeist$ ./testscript.pl | ./stderr.awk
ERR 1
ERR 2
STDERR: OUT 1
STDERR: OUT 2
Run Code Online (Sandbox Code Playgroud)

我看到标准错误是立即输出的,而标准输出由于管道而被延迟。打印语句的原始顺序不会保留。

我还可以将标准错误重定向到标准输出:

lorkenpeist$ ./testscript.pl 2>&1 | ./stderr.awk
STDERR: ERR 1
STDERR: ERR 2
STDERR: OUT 1
STDERR: OUT 2
Run Code Online (Sandbox Code Playgroud)

不仅所有内容都被处理,而stderr.awk不仅仅是标准错误,而且打印语句的顺序也没有被保留。有没有办法只将标准错误发送到 …

unix io-redirection

1
推荐指数
1
解决办法
265
查看次数

在Python库中注册Robot Framework侦听器

Robot Framework的Listener功能非常适合添加可在命令行上调用的可选预处理/后处理,例如pybot --listener myListener.py mySuite.robot。但是,我正在为Robot Framework创建一个Python库,并且我想自动注册其侦听器而无需在命令行上调用,以便在导入我的库时始终使用那些侦听器(我希望使用关键字和侦听器一起工作)。有没有一种使用Python代码注册侦听器的方法?

python listener robotframework

1
推荐指数
1
解决办法
3008
查看次数

Robot Framework位置和关键字名称

我想创建一个带有0参数函数的python库,我的自定义Robot Framework关键字可以调用它.它需要知道定义关键字的文件的绝对路径以及关键字的名称.我知道如何使用robot.libraries.BuiltIn库和${SUITE_SOURCE}${TEST NAME}变量做一些与测试用例类似的东西,但我找不到任何类似的自定义关键字.我不在乎答案有多复杂,也许我必须深入挖掘Robot Framework内部类的内涵并以某种方式访问​​这些数据.有没有办法做到这一点?

python robotframework

1
推荐指数
1
解决办法
1614
查看次数

在unix中获取2种模式之间的所有内容

我需要一个awk/cut one liner来获取模式和最后一个文件名之间的所有内容,例如:

$ cat .exportfiles.text
/branches/WP_Fix/Code/SharedApp/src/gov/illinois/ies/business/rules/ed/CorticonFinIncomeEntiyLoader.java
/branches/WP_Fix/Code/BEAN/Framework/ejbModule/gov/illinois/ies/business/rules/entities/fin/Income.java
/branches/WP_Fix/settings/Environment/RT/properties/build.properties
/branches/WP_Fix/test/Environment/DEV/properties/build.properties
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Code/SharedApp/src/gov/illinois/ies/business/rules/ed
Code/BEAN/Framework/ejbModule/gov/illinois/ies/business/rules/entities/fin
settings/Environment/RT/properties
test/Environment/DEV/properties
Run Code Online (Sandbox Code Playgroud)

unix bash shell awk sed

0
推荐指数
1
解决办法
252
查看次数

如何在while循环中每5分钟触发一次作业?

我需要在while循环中每隔5分钟检查一些变量.while循环也执行其他东西,但在该持续时间内,它必须每5分钟执行一次[code].任何人都可以建议我很好的解决方案吗?

while (1) {
 <execute something all the time>
# Check the time, if it is 5 minutes passed then execute the below code
[code]

}
Run Code Online (Sandbox Code Playgroud)

perl perl-module

0
推荐指数
1
解决办法
1202
查看次数