如何在Python单元测试中访问全局变量?

如何在Python单元测试中访问全局变量?,python,unit-testing,global-variables,Python,Unit Testing,Global Variables,我有一个名为backend的模块,其中包含population.py Python文件。population.get_distinct_persons()将不同的人员ID存储到全局集中: distinct_persons = set() def get_distinct_persons(population): for person in population.persons: distinct_persons.add(person.person_id) if __

我有一个名为backend的模块,其中包含population.py Python文件。population.get_distinct_persons()将不同的人员ID存储到全局集中:

distinct_persons = set()

def get_distinct_persons(population):

    for person in population.persons:
        distinct_persons.add(person.person_id)

if __name__ == '__main__':

    population =  Population()
    person1 = Person(1)
    population.persons.append(person1)
    person2 = Person(2)
    population.persons.append(person2)
    get_distinct_persons(population)

我需要为函数get_distinct_person编写一个单元测试,检查预期的distinct_person和实际的distinct_person是否相等。我看过这篇文章,知道Python模拟模块可能允许我这样做,但还没有找到一种可行的方法。请分享你的想法和想法。谢谢

如果您的单元测试可以访问
get_distinct_persons
,则它可以访问
distinct_persons
;这两个名称都绑定在模块范围内。@chepner-谢谢您的评论。但是如果我在测试中得到了不同的人(self.\u population),然后断言它(不同的人,set([1,2]),我会得到断言错误,因为不同的人被设置了([])。你必须准确地展示你是如何设置和运行测试的。你是对的。我有权访问全局变量distinct_persons!测试数据不正确。我对同一概念有疑问。。在测试更新全局变量的函数时。。调用被测试函数时,如何让被测试函数访问全局变量。。当测试试图访问全局变量testscript时,我收到一个关键错误。