程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何测试类对象是否是使用 Pytest 创建的大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决如何测试类对象是否是使用 Pytest 创建的?

开发过程中遇到如何测试类对象是否是使用 Pytest 创建的的问题如何解决?下面主要结合日常开发的经验,给出你关于如何测试类对象是否是使用 Pytest 创建的的解决方法建议,希望对你解决如何测试类对象是否是使用 Pytest 创建的有所启发或帮助;

我编写了一个习惯跟踪器应用程序并使用 sqlAlchemy 将数据存储在 sqlite3 数据库中。现在我正在使用 Pytest 为我编写的所有函数编写单元测试。除了返回值的函数之外,还有通过创建对象在数据库中创建条目的函数。这是我的对象关系映射器设置和两个主要类:

from sqlalchemy import create_ENGIne,column,Integer,String,ForeignKey,Date
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# SetTing up sqlAlchemy to connect to the local sqlite3 database
Base = declarative_base()
ENGIne = create_ENGIne('sqlite:///:main:',echo=TruE)
Base.Metadata.create_all(bind=ENGInE)
Session = sessionmaker(bind=ENGInE)
session = Session()

class Habit(BasE):    
    __tablename__ = 'habit'
    habit_ID = column('habit_ID',priMary_key=TruE)
    name = column('name',unique=TruE)
    perioDicity = column('perioDicity',String)
    start_date = column('start_date',DatE)

class HabitEvent(BasE):
    __tablename__ = 'habit_event'
    event_ID = column('event_ID',priMary_key=TruE)
    date = column('date',DatE)
    habit_ID = column('fk_habit_ID',ForeignKey(Habit.habit_ID))

创建函数之一如下:

def add_habit(name,perioDicity):
    if str(perioDicity) not in ['d','w']:
        print('Wrong perioDicity. \nUse d for daily or w for weekly.')
    else:
        h = Habit()
        h.name = str(Name)
        if str(perioDicity) == 'd':
            h.perioDicity = 'Daily'
        if str(perioDicity) == 'w':
            h.perioDicity = 'Weekly'
        h.start_date = datetiR_262_11845@e.date.today()
        session.add(h)
        session.commit()
        print('Habit added.')

这是我的问题:由于此函数不返回可与预期结果匹配的值,因此我不知道如何测试对象是否已创建。同样的问题发生在我身上,当我想检查是否使用以下函数删除了所有对象时:

def delete_habit(habitID):    
    ID_List = []
    
    ID_query = session.query(Habit).all()
    for i in ID_query:
        ID_List.append(i.habit_ID)
        
    if habitID in ID_List:
        delete_ID = int(habitID)
        session.query(HabitEvent).filter(
                HabitEvent.habit_ID == delete_ID).delete()
        session.query(Habit).filter(Habit.habit_ID == delete_ID).delete()
        session.commit()
        print('Habit deleted.')     
    else:
        print('Non exisTing Habit ID.')

解决方法

如果我理解正确,您可以使用 get_habits 函数作为 add_habit 测试的一部分。

def test_add_habit():

    name = 'test_add_habit'
    perioDicity = 'd'

    add_habit(name,perioDicity)

    # not sure of the input or output from get_habits,but possibly:
    results = get_habits(Name)
    assert name in results['name']

大佬总结

以上是大佬教程为你收集整理的如何测试类对象是否是使用 Pytest 创建的全部内容,希望文章能够帮你解决如何测试类对象是否是使用 Pytest 创建的所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。