python - 单元测试面向方面的功能

标签 python unit-testing aop

我想知道您会建议什么作为单元测试面向方面的应用程序功能的最佳方法(好吧,也许这不是最好的名字,但这是我能想到的最好的方法:-))例如日志记录或安全?

这些东西在应用程序中无处不在,那么如何正确地测试它们呢?

例如假设我正在用 Python 编写 Cherrypy Web 服务器。我可以使用装饰器来检查登录用户是否具有访问给定页面的权限。但随后我需要为每个页面编写测试以查看其是否正常工作(或者更像是查看我是否没有忘记检查该页面的安全权限)。

如果在 Web 服务器“正常业务实现”期间实现日志记录和/或安全性,这可能(强调可能)是可以忍受的。然而,安全性和日志记录通常倾向于事后添加到应用程序中(或者这可能只是我的经验,我通常会得到一个服务器,然后被要求实现安全模型:-))。

非常欢迎对此有任何想法。我目前已经“解决”了这个问题,嗯 - 根本没有测试它。 谢谢。

最佳答案

恕我直言,测试用户对页面的权限的方式取决于您的应用程序设计和您使用的框架设计。

通常,用单元测试覆盖您的权限检查器装饰器以确保它始终按预期工作可能就足够了,然后编写一个循环通过您的“ View ”的测试(或 cherrypy 使用的任何术语,尚未将其用于很长一段时间)并检查这些函数是否用适当的装饰器装饰。

至于日志记录,您还不清楚具体要测试什么。无论如何,为什么不能 stub 日志记录功能并检查那里发生了什么?

关于python - 单元测试面向方面的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2401789/

相关文章:

python - ImportError:没有名为 bs4 的模块(BeautifulSoup)

python - shell 不尊重解释器?

java - 向类添加类型间公共(public)静态方法

Spring AOP : Getting parameters of the pointcut annotation

javascript - 使用 JavaScript 在 Django 管理站点上添加动态字段

Python json.load JSONDecodeError : Extra data error when trying load multiple json dictionaries

unit-testing - Jest – 如何模拟模块中的非默认导出?

c# - 使用在 Object Builder 上采用 Func<T> 的方法

unit-testing - 如何使用 NHibernate 删除所有数据库数据?

java - AOP编程——ProceedingJoinPoint只支持around advice