为什么读取NamedTemporaryFile时我的断言失败?

熔化

我正在编写读取文件并根据该文件的内容创建字典的代码。代码非常简单,但是我想测试边缘情况。

这是我的尝试:

from tempfile import NamedTemporaryFile
from nose.tools import *

def read_file(filename):
    with open(filename) as f:
        my_dict = { dict(line.strip().split(',')) for line in f }
    return my_dict

def test_read_file():
    file_contents = b"""Hello,World"""
    with NamedTemporaryFile() as fp:
        fp.write(file_contents)
        my_dict = read_file(fp.name)
    print(my_dict)
    assert my_dict == { "Hello" : "World" }

不幸的是,这个断言失败了,因为它my_dict是一个空字典。

我的理解是,一旦NamedTemporaryFile被关闭,它被摧毁,所以我不希望它被破坏,直到直接read_filemy_dict填充。fp被打开了两次:一次是写作,一次是阅读-这是麻烦制造者吗?

这是测试读取文件功能的正确方法吗?如果是这样,为什么我的主张失败了?如果没有,那么编写此测试的更好的机制是什么?

切普纳

您需要刷新写入以确保在读取数据之前已写入数据。

def test_read_file():
    file_contents = b"""Hello,World"""
    with NamedTemporaryFile() as fp:
        fp.write(file_contents)
        fp.flush()
        my_dict = read_file(fp.name)
    print(my_dict)
    assert my_dict == { "Hello" : "World" }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这个Groovy日期断言失败?

来自分类Dev

为什么此XSD 1.1断言失败?

来自分类Dev

为什么RakNet的SetNetworkID导致断言失败?

来自分类Dev

尝试从文件读取时设置失败位-为什么?

来自分类Dev

为什么在读取混合数据时ifstream失败?

来自分类Dev

为什么断言失败时将“ JMeterThread.last_sample_ok”设置为true

来自分类Dev

为什么在运行代码时出现调试断言失败错误

来自分类Dev

为什么我的gulp / teamcity构建失败并显示“断言失败:0,文件src \ uv-common.c,第103行”?

来自分类Dev

使用runAssembler时,为什么我的ATG构建失败?

来自分类Dev

为什么重构时我的单元测试失败

来自分类Dev

Python NamedTemporaryFile-读取时出现ValueError

来自分类Dev

为什么我断言元素包含某个字符串失败,即使它在那里?

来自分类Dev

为什么Ember.onerror()无法捕获断言失败错误?

来自分类Dev

浮点测试断言-为什么这些“相同”的数组失败?

来自分类Dev

为什么setTo不起作用(断言失败)?

来自分类Dev

Java中的对象clone():为什么此断言失败?

来自分类Dev

浮点测试断言-为什么这些“相同”的数组失败?

来自分类Dev

为什么这个简单的断言在python中失败?

来自分类Dev

为什么setTo不起作用(断言失败)?

来自分类Dev

为什么我的比较失败?

来自分类Dev

为什么我的递归失败了?

来自分类Dev

为什么我的NSMutableURLRequest失败?

来自分类Dev

为什么我的Nginx失败了?

来自分类Dev

为什么在zsh中读取-a失败

来自分类Dev

FireStore静默读取失败,我不知道为什么

来自分类Dev

为什么在使用 request 时解析我的日期成功,但在使用 reqwests 时失败?

来自分类Dev

为什么我的代码显示断言错误和值错误?

来自分类Dev

为什么insertInto失败并显示“断言失败:没有针对InsertIntoTable的计划”?

来自分类Dev

检测到修饰键+数字键时,无法读取属性'keyCode''character'断言失败

Related 相关文章

  1. 1

    为什么这个Groovy日期断言失败?

  2. 2

    为什么此XSD 1.1断言失败?

  3. 3

    为什么RakNet的SetNetworkID导致断言失败?

  4. 4

    尝试从文件读取时设置失败位-为什么?

  5. 5

    为什么在读取混合数据时ifstream失败?

  6. 6

    为什么断言失败时将“ JMeterThread.last_sample_ok”设置为true

  7. 7

    为什么在运行代码时出现调试断言失败错误

  8. 8

    为什么我的gulp / teamcity构建失败并显示“断言失败:0,文件src \ uv-common.c,第103行”?

  9. 9

    使用runAssembler时,为什么我的ATG构建失败?

  10. 10

    为什么重构时我的单元测试失败

  11. 11

    Python NamedTemporaryFile-读取时出现ValueError

  12. 12

    为什么我断言元素包含某个字符串失败,即使它在那里?

  13. 13

    为什么Ember.onerror()无法捕获断言失败错误?

  14. 14

    浮点测试断言-为什么这些“相同”的数组失败?

  15. 15

    为什么setTo不起作用(断言失败)?

  16. 16

    Java中的对象clone():为什么此断言失败?

  17. 17

    浮点测试断言-为什么这些“相同”的数组失败?

  18. 18

    为什么这个简单的断言在python中失败?

  19. 19

    为什么setTo不起作用(断言失败)?

  20. 20

    为什么我的比较失败?

  21. 21

    为什么我的递归失败了?

  22. 22

    为什么我的NSMutableURLRequest失败?

  23. 23

    为什么我的Nginx失败了?

  24. 24

    为什么在zsh中读取-a失败

  25. 25

    FireStore静默读取失败,我不知道为什么

  26. 26

    为什么在使用 request 时解析我的日期成功,但在使用 reqwests 时失败?

  27. 27

    为什么我的代码显示断言错误和值错误?

  28. 28

    为什么insertInto失败并显示“断言失败:没有针对InsertIntoTable的计划”?

  29. 29

    检测到修饰键+数字键时,无法读取属性'keyCode''character'断言失败

热门标签

归档