我希望根据关联列表中的内容动态调用函数.
这是半伪代码中的一个例子.listOfFunctions将传递给callFunctions.
listOfFunctions = [('function one', 'value one')
, ('function two', 'value two')
, ('function three', 'value three')]
callFunctions x = loop through functions
if entry found
then call function with value
else do nothing
Run Code Online (Sandbox Code Playgroud)
这个问题的关键不在于循环列表,而是一旦我有了它的名字,它就是如何调用函数的?
考虑此用例以进一步说明.您打开命令提示符并显示以下菜单.
1:编写新的vHost文件
2:退出
您编写新的vHost文件,但未显示新菜单
1:输入新指令
2:写文件
3:退出
您为vHost输入一些新指令,现在可以编写该文件了.
程序不会盲目地写出它可能的每一个指令,而是只编写你提供的指令.这是关联列表的用武之地.编写一个巨大的if/then/else或case语句是疯狂的.循环遍历列表,查找添加了哪些指令并调用函数来相应地编写它们会更加优雅.
因此,循环,找到一个函数名,用提供的值调用所述函数.
感谢任何可以帮助解决这个问题的人.
编辑:
这是我提出的解决方案(建设性批评总是受欢迎的).
我导出了在关联列表中编写指令的函数,因为每个提供的答案都表示只包含函数是要走的路.
funcMap = [("writeServerName", writeServerName)
,("writeServeralias", writeServerAlias)
,("writeDocRoot", writeDocRoot)
,("writeLogLevel", writeErrorLog)
,("writeErrorPipe", writeErrorPipe)
,("writeVhostOpen", writeVhostOpen)]
Run Code Online (Sandbox Code Playgroud)
在实际写入主机的文件中,导入该文件.
我有一个名为hostInfo的关联列表来模拟将从最终用户收集的一些虚拟值和一个名为runFunction的函数,该函数使用edalorzo提供的技术来过滤这两个列表.通过匹配两个列表的键,我确保使用正确的值调用正确的函数.
import Vhost.Directive
hostInfo = …Run Code Online (Sandbox Code Playgroud) 我有一个自定义验证函数,但我想使用 Django 提供的单元测试框架来测试它是否抛出了应该抛出的错误。
我可以直接调用该函数并以这种方式测试它,但这并不能确保它在视图中正确使用(即:我想进行集成测试)。
django 测试非特定字段验证错误的方法是什么?
例如,电子邮件字段将测试输入的文本是否是有效的电子邮件地址,但表单上方将显示非字段错误,与任何字段都没有关系。例如,它会说该电子邮件地址已被注册。
在测试应用程序时,如何测试这些非现场验证错误?