首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用shinytest记录或跟踪?

如何使用shinytest记录或跟踪?
EN

Stack Overflow用户
提问于 2018-10-19 22:10:06
回答 3查看 304关注 0票数 1

我希望能够看到代码中的reactive({...})部件内部发生了什么。我认为使用shinytest可以执行使用Shiny Modules并了解callModule的部分应用程序。

我尝试在我的代码中记录/跟踪/打印以下内容。

代码语言:javascript
复制
print("hello1")
message("hello2")
cat(file=stderr(), "hello3")
logging::loginfo("hello4")

runtest.R

代码语言:javascript
复制
library(shinytest)
testApp("/home/eddy/rwork/filters", "mytest")
viewTestDiff("/home/eddy/rwork/filters", interactive = FALSE)

产出:

代码语言:javascript
复制
Rscript runtest.R
Running mytest.R 
==== Comparing mytest... No changes.
==== mytest ====
No differences between expected and current results

如何在测试运行中添加一些跟踪输出?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-11-03 19:59:13

我认为现在还没有一种非常方便的方法来查看应用程序的输出,但是在ShinyDriver对象上有这样的方法:

app$getDebugLog()查询一个或多个调试日志:shiny_consolebrowsershinytesthttps://rstudio.github.io/shinytest/reference/ShinyDriver.html

您可以将此与shiny_console选项一起用于在单个测试中打印应用程序输出,如:

代码语言:javascript
复制
# mytest.R

app <- ShinyDriver$new()

...

log <- app$getDebugLog("shiny_console")
print(log)
票数 3
EN

Stack Overflow用户

发布于 2019-04-09 16:33:41

shinytest在测试过程中集成了闪亮的导出值概念,因此您可以使用函数shiny::exportTestValues()创建带有要导出的值(包括反应性)的命名表达式。

例如,如果在应用程序代码中使用了某种类型的输入绑定的反应性data.frame,scaledData,则可以执行以下操作:

代码语言:javascript
复制
scaledData <- reactive({
  dummyData[, "y"] <- dummyData[, "y"] * input$scale
  return(dummyData)
})

# The scaledData will be captured as a json object in the shinytest output
exportTestValues(scaledData = scaledData())

这将捕获json文件中exports键下快照中的反应性值,因此您可以在测试比较中使用这个值(如果愿意,还可以查看数据)。

最后一个注意事项是,这些导出值只有在应用程序处于测试模式(例如isTRUE(getOption("shiny.testmode")) )时才能运行。

我写了一篇博文,讲述了我是如何用这个工具来测试DataTables的,你可以在这里读到:https://nadirsidi.github.io/Shinytest/

票数 2
EN

Stack Overflow用户

发布于 2018-11-02 17:53:47

您可以在您的反应性函数中分配print()、cat()、警告(),以在R提示符内检查对象的值o类。这适用于我只在RStudio中使用Shinny,而不使用shinytest。另外,正如您所说的,它不能使用前面的选项,您可以放置一个write.myformat()函数来编写任何类型的对象并在外部检查它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52900477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档