小编man*_*del的帖子

如何在Perl中进行单元测试?

我一直在做一些OO Perl编程,我想知道:哪个是执行单元测试的最佳方法?

到目前为止,我一直在使用Test :: Simple模块来执行测试,但感觉不足以满足我的需求.

你能指点我一些很好的模块吗?

testing perl unit-testing

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

Python字典deepcopy

我想知道在以下背景下,深度复制是如何工作的:

from copy import deepcopy

def copyExample:
    self.myDict = {}
    firstPosition = "First"
    firstPositionContent = ["first", "primero"]
    secondPosition = "Second"
    secondPositionContent = ["second"]
    self.myDict[firstPosition] = firstPositionContent 
    self.myDict[secondPosition] = secondPositionContent
    return deepcopy(self.myDict)

def addExample(self):
    copy =  self.copyExample()
    copy["Second"].add("segundo")
Run Code Online (Sandbox Code Playgroud)

它是否返回对字典中列表的引用?或者它是否按预期工作并复制具有不同引用的新列表中的每个列表?

我知道什么是深层复制(所以没有必要解释深层和浅层之间的区别),但我想知道它是否像我期望的那样工作,因此在我使用时不会更改实例变量addExample().

python dictionary deep-copy

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

12
推荐指数
3
解决办法
2587
查看次数

如何测试代码生成工具?

我目前正在开发一个我的小项目,它以动态方式生成SQL调用以供其他软件使用.SQL调用事先是未知的,因此我希望能够对生成SQL的对象进行单元测试.

您是否了解如何才能做到这一点的最佳方法?请记住,没有可能的方法来了解要生成的所有可能的SQL调用.

目前我唯一的想法是使用regex从db创建接受的SQL的测试用例,并确保SQL将编译,但这不能确保调用返回预期的结果.

编辑:添加更多信息:

我的项目是Boo的扩展,允许开发人员使用一组属性标记他的属性.此属性用于标识开发人员如何将对象存储在DB中.例如:

# This attribute tells the Boo compiler extension that you want to
# store the object in a MySQL db. The boo compiler extension will make sure that you meet
# the requirements
[Storable(MySQL)] 
class MyObject():
    # Tells  the compiler that name is the PK
    [PrimaryKey(Size = 25)]
    [Property(Name)]
    private name as String

    [TableColumn(Size = 25)]
    [Property(Surname)]
    private surname as String

    [TableColumn()]
    [Property(Age)]
    private age as int
Run Code Online (Sandbox Code Playgroud)

好主意是生成的代码不需要使用反射,但它会在编译时添加到类中.是的,编译需要更长的时间,但根本不需要使用Reflection.我目前有代码工作生成所需的方法,在编译时返回SQL,它们被添加到对象并可以被调用,但我需要测试生成的SQL是否正确:P

database testing unit-testing code-generation

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

在Perl的foreach中,$ _比命名变量更有效吗?

我是Perl的新手,我想知道以下哪个循环更有效:

my @numbers = (1,3,5,7,9);
foreach my $current (@numbers){
    print "$current\n";
}
Run Code Online (Sandbox Code Playgroud)

要么

my @numbers = (1,3,5,7,9);
foreach (@numbers){
    print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)

我想知道这一点,以便知道$ _的使用是否更有效,因为它是放在寄存器中,因为它是常用或不常用的.我已经编写了一些代码,我正在尝试清理它,并且我发现我使用的第一个循环比第二个循环更频繁.

variables perl performance loops

8
推荐指数
4
解决办法
1524
查看次数

如何替换Perl中所有HTML编码的重音?

我有以下情况:

有一个工具可以从Web界面获取XSLT并将XSLT嵌入到XML文件中(应该有人被解雇)."不幸的是"我在一个法语国家工作,因此XSLT有很多带有重音符号的单词.当XSLT嵌入到XML中时,该工具会将所有重音转换为其HTML代码(Iacute,igrave等...).

我的Perl代码正在从XML中检索XSLT,并使用Xalan命令行工具针对其他XML执行它.每次XSLT中都有一些重音时,Xalan工具会抛出异常.

我最初做一个正则表达式来改变XSLT中的所有重音:

# the & is omitted in the codes becuase it will be rendered in the page
$xslt =~s/Aacute;/Á/gso;
$xslt =~s/aacute;/á/gso;
$xslt =~s/Agrave;/À/gso;
$xslt =~s/Acirc;/Â/gso;
$xslt =~s/agrave;/à/gso;

但这样做意味着我必须为每个重音代码写一个正则表达式....

我的问题是,如果没有为每个代码编写正则表达式,有没有这样做呢?(认为​​这是唯一的解决方案,想要呕吐.)

顺便说一句,该工具是TeamSite,它很糟糕.....

编辑:我忘了提到我需要一个Perl唯一的解决方案,安全性不允许我安装他们没有检查一周左右的任何类型的库:(

regex string perl replace

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

应该将哪些文件添加到svn回购中?

我正在开发一个个人项目,虽然我有一个wiki,但我想在svn存储库中添加不同的文档文件.这些文件包括XML(由monodoc生成)以及UML图(用dia生成).

在这个好主意中,我听到/读到关于不将二进制数据添加到svn repo并尝试保留代码的评论,是吗???

svn

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

.Net中的UnitTesting属性?

我正在开发一个我想在开源中发布的lib.我已经开始为代码编写测试了,我想知道我是如何测试.Net对象中的属性的.可以说我有以下内容:


public class Person{
    #region variables
    private string _name = String.Empty;
    private string _surname = String.Empty;
    #region properties
    public string Name{
        get{
             return _name;
        }
    }
    public string Surname{
        get{
            return _surname;
        }
        set{
            _surname = value;
        }
    }
}

我有两个与代码相关的问题:

  1. 我如何单元测试一个只有一个getter的属性(在示例中像Name)
  2. 如何使用setter和getter对属性进行单元测试(如示例中的Surname)

我想测试那么简单的属性,因为我已经发现其他代码中的错误是Itellinsense做错了自动完成而属性没有返回正确的变量.

更新:

我不是说简单的属性就像示例中那样,它们确实有一些逻辑,并且很难调试.编写使用setter来测试getter的测试,反之亦然,因为如果出现故障,我不知道应该指责哪种方法.我正在使用属性,因为它们被添加为公共变量,后来需要添加更多逻辑.

.net c# testing unit-testing

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