当前位置: 首页 > 面试题库 >

表驱动的文件创建测试

徐奇
2023-03-14
问题内容

我从@volker得到了一个有关表驱动测试的示例,如下所示,但是目前我错过了我应该在真实测试中放入的内容,该测试使用的是字节,目前我不确定在args和中放入什么expected []byte,例如,我想检查一下在文件中2 new line然后是application条目,我该如何做而无需创建真实文件并进行解析

type Models struct {
    name        string
    vtype       string
    contentType string
}

func setFile(file io.Writer, appStr Models) {
    fmt.Fprint(file, "1.0")

    fmt.Fprint(file, "Created-By: application generation process")
    for _, mod := range appStr.Modules {
        fmt.Fprint(file, "\n")
        fmt.Fprint(file, "\n")
        fmt.Fprint(file,  appStr.vtype) //"userApp"
        fmt.Fprint(file, "\n")
        fmt.Fprint(file, appStr.name) //"applicationValue"
        fmt.Fprint(file, "\n")
        fmt.Fprint(file, appStr.contentType)//"ContentType"
    }
}

func Test_setFile(t *testing.T) {
    type args struct {
        appStr models.App
    }
    var tests []struct {
        name string
        args args
        expected []byte
   }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            b := &bytes.Buffer{}
            setFile(b, tt.args.AppStr)
            if !bytes.Equal(b.Bytes(), tt.expected) {
                t.Error("somewhat bad happen")
            }
        })
    }
}

我阅读并理解了以下示例,但不了解字节和文件 https://medium.com/@virup/how-to-write-concise-tests-
table-driven-tests-ed672c502ae4


问题答案:

如果一开始只检查静态内容,那么您实际上只需要进行一项测试。它看起来像这样:

func Test_setFile(t *testing.T) {
    type args struct {
        appStr models.App
    }
    var tests []struct {
        name string
        args args
        expected []byte
    }{
        name: 'Test Static Content',
        args: args{appStr: 'Some String'},
        expected: []byte(fmt.Sprintf("%s%s%s", NEW_LINE, NEW_LINE, "Application")),
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            b := &bytes.Buffer{}
            setFile(b, tt.args.AppStr)
            if !bytes.Equal(b.Bytes(), tt.expected) {
                t.Error("somewhat bad happen")
            }
        })
    }
}

尽管由于该测试只有一个案例,所以这里实际上不需要使用表驱动的测试。您可以清理它看起来像这样:

func Test_setFile(t *testing.T) {
    b := &bytes.Buffer{}
    setFile(b, 'Some String')
    want := []byte(fmt.Sprintf("%s%s%s", NEW_LINE, NEW_LINE, "Application"))
    got := b.Bytes()
    if !bytes.Equal(want, got) {
        t.Errorf("want: %s got: %s", want, got)
    }
}


 类似资料:
  • 驱动器目录及文件结构 下面是驱动器目录和文件结构布局的简单例子: /application/libraries/Driver_name Driver_name.php drivers Driver_name_subclass_1.php Driver_name_subclass_2.php Driver_name_subclass_3.php 注解 为了在大小写敏感的文件系统下保证兼容性,Driv

  • 当我运行下面的代码时,它取自:https://developers.google.com/drive/api/v3/manage-shareddrives#python 我得到“用户对此文件没有足够的权限”如果我创建文件、列出共享驱动器或其他任何东西,都不会发生这种情况。除了['https://www.googleapis.com/auth/drive']. 需要注意的是,我使用的是服务号。服务帐

  • 问题内容: 如何自动创建pyi文件的样板代码? 我想创建一个保华集团的类型描述暗示文件pep484其中包含了所有的方法名。 我不要魔术。我要在自动创建文件后添加类型信息。 我想避免复制+粘贴工作。 目标:在PyCharm for Python2中键入提示。 问题答案: 就我而言,PyCharm中没有此类直接工具。但是,有用于此目的的第三方工具。 MyPy 是的,我想任何想在Python中使用编译时

  • 编写测试代码时,一个较好的办法是把测试的输入数据和期望的结果写在一起组成一个数据表:表中的每条记录都是一个含有输入和期望值的完整测试用例,有时还可以结合像测试名字这样的额外信息来让测试输出更多的信息。 实际测试时简单迭代表中的每条记录,并执行必要的测试。这在练习 13.4 中有具体的应用。 可以抽象为下面的代码段: var tests = []struct{ // Test table

  • 问题内容: 我正在尝试将Excel文档转换为SQL 2005中的表。我找到了下面的链接,并且想知道它是否看起来像解决方案。如果是这样,@ excel_full_file_name语法是什么,路径相对于哪里? http://www.siccolo.com/Articles/SQLScripts/how-to-create-sql-to-convert- Excel_to_table.html 问题答

  • 我想创建一个纯/文本哑剧类型文件,使用PHP和谷歌应用程序引擎上的谷歌驱动器的谷歌API。 当我使用: 没有内容写入文件。 如果我使用: 内容将添加到文件中。 这段代码来自Google文档: 显示“文本/纯”类型的 mime 类型的代码行 但是,同样,如果我使用它,则不会向文件中添加任何内容。创建纯文本文件和添加内容的设置是什么? 我的完整代码是这样的: