func (f *FeatureImpl) TearDown(name string, fn FeatureFunc) interface{} {
	td := &tearDownImpl{
		name: name,
		fn:   fn,
	}
	f.teardown = td
	return td
}
TearDown represents the optional teardown step for a feature
package acceptance
import "context"
var (
	failures int
	success  int
	features []*FeatureImpl
)
type FeatureFunc func(ctx context.Context)
type FeatureImpl struct {
	label string
	name  string
	fn FeatureFunc
	hasRun bool
	failed bool
	teardown *tearDownImpl
	before string
	inside string
	requiredFlags []string
}
type tearDownImpl struct {
	name string
	fn FeatureFunc
}
func Feature(label, name string, fn FeatureFunc) *FeatureImpl {
	fi := &FeatureImpl{
		label: label,
		name:  name,
		fn:    fn,
	}
	features = append(features, fi)
	return fi
}