如何阻止Pytest执行非测试python文件?

8yoxcaq7  于 2023-04-08  发布在  Python
关注(0)|答案(1)|浏览(107)

我写了一个连接到SQLite3数据库并创建表的Python脚本。我创建了另一个Python文件来使用Pytest执行一些测试。出于某种原因,每当我运行测试文件时,主文件中的代码似乎也被执行了,并创建了一个表。我假设Pytest只会执行文件名开头或结尾带有test的python文件。我不知道这是怎么回事。
我的py1.py文件

import sqlite3

# Create sqlite3 table
def create_table(table_name):
    try:
        print('Creating table in db')
        conn = sqlite3.connect('lite.db')
        cur = conn.cursor()
        cur.execute("CREATE TABLE IF NOT EXISTS " + table_name + " (Id INTEGER)")
        conn.commit()
        conn.close()
        print('Table successfully created')
    except Exception as e:
        print(e)

db_table_name = 'my_temp_table'

create_table(db_table_name)

如果我运行这个文件,就会像预期的那样创建一个名为my_temp_table的空表。
现在我删除了my_temp_table表,并尝试使用Pytest运行下面的test_py1.py文件:

from py1 import create_table

def test_function():
    assert true

它的预期行为是说1个测试通过了,它确实通过了,但沿着它也创建了一个名为my_temp_table的表,这表明py1.py也正在由Pytest运行。我不确定是什么触发了这一点。

4c8rllxm

4c8rllxm1#

py1.py文件的末尾添加此代码应该可以解决这个问题。

if __name__ == '__main__':
    db_table_name = 'my_temp_table'
    create_table(db_table_name)

相关问题